PDA

View Full Version : Problema Java



Warbarbie
17th February 2011, 19:06
Cioè almeno credo che sia Java.
In pratica io prendo in Input 2 campi stringa, rispettivamente rappresentano mese e anno, li concateno col formato MM-yyyy
Ora io sti 2 campi concatenati li devo inserire in una tabella in una colonna che è un tipo date.
Sto diventando scemo, esiste una classe java che mi converte la stringa in data dopo averla letta?

Hador
17th February 2011, 19:10
http://www.google.it/search?q=convert+string+date&sourceid=opera&num=0&ie=utf-8&oe=utf-8
-_-

cmq date è deprecato.

Eltarion
17th February 2011, 19:14
hahahahahaah che pacco !! :P

comunque è un problema che affligge tutti i programmatori prima o poi :nod:

Warbarbie
17th February 2011, 19:35
Già googlato, quella non va QQ

Axet
17th February 2011, 19:52
Scusa eh ma con tabella cosa intendi? Un db?
Perchè l'ultima volta che ho avuto a che fare con date e un db (era mysql) gli passavo una stringa che poi il dmbs trattava come date :nod:

Dr.Doomed
17th February 2011, 20:18
Magari dico una fesseria, ma non mi risulta si possa creare un'istanza di Date senza il valore dei giorni, sbaglio? Temo sia li` il tuo problema.
Hai provato a creare la data partendo da una String che contenga anche tale informazione, ossia nel formato dd-mm-yyyy (per convenzione potresti considerare come giorno il primo del mese), per poi visualizzarne eventualmente solo i valori di mese e anno nelle viste?

Amiag
17th February 2011, 20:18
la classe che cerchi è SimpleDateFormat

ma visto che ti serve solo mese e anno fai a prima ad istanziarla tu a mano una Date ed a impostargli mese ed anno

Kat
17th February 2011, 20:54
la classe che cerchi è SimpleDateFormat

*

Basta il primo esempio del link di Hador, che cosa non ti funziona?

Bakaras
17th February 2011, 21:18
Come ti hanno già detto, i campi di tipo date , datetime short o datetime long, hanno bisogno che in input il dato sia formattato Aa dovere, il che vuol dire che minimo gli devi mettere anche il giorno ovvero : dd-mm-yyyy o combinazioni diverse dovute a regional settings della macchina

Sent from my HTC Desire using Tapatalk

Warbarbie
17th February 2011, 23:42
Boh domani provo a passargli il formato data completo mettendo il giorno ad 1 di default.
@Axet si deve andare tutto in un db(mysql per ora), ma a passargli la stringa "mm-yyyy" mi da errore QQ

thx

Axet
18th February 2011, 01:15
Ovvio che ti da errore, mm-yyyy non è una formattazione lecita lol.
Cazzo di data è senza il giorno?

Tunnel
18th February 2011, 11:02
Diobono che fail

Warbarbie
18th February 2011, 12:16
Oh non funziona.
E poi cazzo di informatici se io voglio un formato data solo di mese e anno dovreste pensare anche a queste esigenze
Potrei concatenare 2 formati data così mi elimino il problema di riportarli a date da string?
pd

Ladro di anime
18th February 2011, 12:29
Oh non funziona.
E poi cazzo di informatici se io voglio un formato data solo di mese e anno dovreste pensare anche a queste esigenze
Potrei concatenare 2 formati data così mi elimino il problema di riportarli a date da string
pd

Te <> DB.
In oracle il formato base per l'inserimento di una data in formato stringa in un campo date prevede il mese in formato mon, cioè le prime 3 lettere del mese ('1-gen-10','3-feb-10', etc..).
Prova a vedere se è lo stesso con mysql.

Warbarbie
18th February 2011, 12:33
Allora mi sono arrivate lamentele circa il fatto che non si capisce un cazzo.
Ho in input un txt con dei campi, tra cui 2 che rappresentano rispettivamente mese ed anno, separati da un ";"
Finalità del tutto è inserire tutti sti campi in una tabella su db, va tutto ok tranne per sta merda di capo data, che su db ha la formattazione "dd-mm-yyyy"
quindi

File txt -----> Tabella db

Il campo date sulla tabella è un "data", quindi ci deve arrivare la concatenazione dei 2 campi di cui sopra, visto che non so come e se si può concatenare 2 campi data li ho trasformati in string, concatenati e tentato di inserire in tabella, ma non funge.
E' possibile non trasformarli in string e concatenare i 2 campi lasciandoli con il tipo data?

Warbarbie
18th February 2011, 12:37
Te <> DB.
In oracle il formato base per l'inserimento di una data in formato stringa in un campo date prevede il mese in formato mon, cioè le prime 3 lettere del mese ('1-gen-10','3-feb-10', etc..).
Prova a vedere se è lo stesso con mysql.

Io non ce voglio lavorare sui db :(

Dr.Doomed
18th February 2011, 12:42
package warbarbiefail;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FailDate {

public static void main(String argv[]){
String str = "02-2011";
DateFormat df = new SimpleDateFormat("MM-yyyy");
try{
Date wardate = df.parse(str);
System.out.println(wardate.toString());
}catch (Exception e){
System.out.println(e);
}
}


}


Output: Tue Feb 01 00:00:00 CET 2011

Sembra funzionare... quindi si possono fare le date in formato MM-yyyy. Notare che se scrivi "mm" ti ci imposta i minuti invece che i mesi.

Ladro di anime
18th February 2011, 12:42
Io non ce voglio lavorare sui db :(
Meglio :sneer:

Hador
18th February 2011, 12:47
si ma non è che stai fallendo il tipo, il date che vuole in input di che package è -_-

Warbarbie
18th February 2011, 13:01
parseDateLocale("dd-MM-yyyy",out1.DATA_CONSEGNA,"EN")

Risolto co sto pezzo di codice, ma so dovuto passare per forza da un xls prima di inserire su db-.-
Che merda Java e che merda i DB
Vi voglio bene tutti

@Hador/Axet/informatici quando avrete tempo in futuro inventate un codice più semplice thx

Amiag
18th February 2011, 13:47
Che merda Java e che merda i DB
sei te che non sei bono so tipo 3 righe di codice

vai a fare il commerciale :nod:

no cmq a onor del vero la gestione delle date in java è sempre stata na merda, infatti l'han cambiata diverse volte

Axet
18th February 2011, 13:50
Un .xls? :look:

Cmq war c'era una soluzione molto più semplice: aggiungevi a tutte le date il giorno (per tutte il primo del mese ad esempio) e lo inserivi così nel db. Quando lo leggi salti i primi 3 caratteri e ti trovi con solo MM-yyyy :nod:

Warbarbie
18th February 2011, 14:54
Un .xls? :look:

Cmq war c'era una soluzione molto più semplice: aggiungevi a tutte le date il giorno (per tutte il primo del mese ad esempio) e lo inserivi così nel db. Quando lo leggi salti i primi 3 caratteri e ti trovi con solo MM-yyyy :nod:

Si ma probabile che i report dovranno tagliare sto cavolo di giorno messo così a caso.
Rosico perchè non so implementare una classe in Java, talend non mi dava la possibilità di fare string to date come volevo io.
Cmq risolto gg thx a tutti

Bakaras
18th February 2011, 15:00
no cmq a onor del vero la gestione delle date in java è sempre stata na merda, infatti l'han cambiata diverse volte


E' una merda in tutti i linguaggi.

Ladro di anime
18th February 2011, 15:27
Io in sql non ho mai avuto problemi a gestirmi le date.

Axet
18th February 2011, 15:31
Si ma probabile che i report dovranno tagliare sto cavolo di giorno messo così a caso.

Si ovvio, se nel file di input ci sono solo mese e anno vuol dire che il giorno non è rilevante.
Ergo usando un sistema come quello descritto quando vai a leggere la data dal db dovresti tagliare le prime tre posizioni della stringa (cioè "dd-") in modo tale da ottenere il formato originario MM-yyyy.


Rosico perchè non so implementare una classe in Java, talend non mi dava la possibilità di fare string to date come volevo io.
Cmq risolto gg thx a tutti

In che senso non sai implementare una classe java? A livello sintattico è una stronzata, la difficoltà chiaramente varia in funzione di quello che la classe deve fare.

Kat
18th February 2011, 19:28
Ma scusa quando poi leggi la data dal db va a finire in un oggetto Date da cui puoi estrarre le stringhe (con il formatter di cui sopra) per i tuoi report formattate come piu ti piacciono.

Warbarbie
18th February 2011, 20:29
Ma scusa quando poi leggi la data dal db va a finire in un oggetto Date da cui puoi estrarre le stringhe (con il formatter di cui sopra) per i tuoi report formattate come piu ti piacciono.

Si ma io uso talend per i processi ETL e non ha(o almeno io non la conosco) una classe già integrata per fare il toString to Date come serviva a me, e di implementarla a mano io non sono capace