PDA

Visualizza la versione completa : JAVA - formattazioni di date.


maximum
07-05-2004, 10:04
Mediante


<%=request.getAttribute("dataUltimoUtilizzo")%>

recupero la data da Oracle nel seguente formato:


2004-06-01 12:00:00.0


Adesso il mio obbiettivo è quello di prendere tale valore Timestamp e trasformarlo in formato String, così:


2004-06-01


Come devo procedere?

Grazie!!! :)

trevor
07-05-2004, 10:29
ciao qp :D

devi usare o il SimpleDateFormat oppure direttamente nelle jsp la taglib fmt (fa parte delle jstl)

dipende da te: se devi visualizzarlo pulito solo nella pagina,usa la fmt.. se ne hai bisogno invece anche nelle classi, usa l'altro metodo

maximum
07-05-2004, 10:49
Ciao trevor, specifico meglio il problema. :)

Allora io recupero da Oracle la data nel seguente formato:


2004-06-01 12:00:00.0

Siccome a me serve trasformarla in stringa ho fatto la seguente:


java.util.Date dataUltimoUtilizzo = (Timestamp)request.getAttribute("dataUltimoUtilizzo");

e poi invocando la funzioncina, ho fatto:


<%=DateUtil.getFormattedDateNew(dataUltimoUtilizzo) %>

Il problema che lui mi ritorna la data nel seguente formato:


01/06/04 12.00

io invece vorrei che me la ritornasse:


01/06/2004 12.00

La funzione "getFormattedDateNew" è sviluppata così:


static public String getFormattedDateNew(java.util.Date date)

{

if (date==null)

return "";

else

{

SimpleDateFormat formatter = new SimpleDateFormat ();

return formatter.format(date);

}

}

Cosa va cambiato? :)

trevor
07-05-2004, 10:56
tu utilizzi un SimpleDateFormat impostato di default
infatti fai


SimpleDateFormat formatter = new SimpleDateFormat ();

return formatter.format(date);

-----



quello che ti consiglio innanzituttoè di inizializzarlo con il Locale appropriato (non si sa mai capisca male la data ;) )
E comunque, per la normalizzazione della data, puoi definire un pattern..


quindi fai un new SimpleDateFormat(pattern, Locale.ITALY);

dove il pattern è una stringa, nel tuo caso "dd-mm-yyyy".

:ciauz:

trevor
07-05-2004, 10:57
Originariamente inviato da trevor
tu utilizzi un SimpleDateFormat impostato di default
infatti fai


SimpleDateFormat formatter = new SimpleDateFormat ();

return formatter.format(date);

-----



quello che ti consiglio innanzituttoè di inizializzarlo con il Locale appropriato (non si sa mai capisca male la data ;) )
E comunque, per la normalizzazione della data, puoi definire un pattern..


quindi fai un new SimpleDateFormat(pattern, Locale.ITALY);

dove il pattern è una stringa, nel tuo caso "dd-mm-yyyy".

:ciauz:


anzi, il tuo pattern è

"dd/mm/yyyy hh:MM" <---- oree minuti :fagiano:

maximum
07-05-2004, 11:05
Non ho capito il discorso del pattern... :master:

trevor
07-05-2004, 11:10
Originariamente inviato da maximum
Non ho capito il discorso del pattern... :master:

il pattern, è uno scheletro di formattazione data.


definisci una stringa e gli dici "la data deve essere in questo formato"


String formato = "dd/mm/yyyy hh:MM";

SimpleDateFormat formatter = new SimpleDateFormat(formato);

formatter.format(data);

---------


formato = "dd/mm/yyyy hh:MM" indica precisamente la data fatta da giorno di 2 cifre, carattere "/", poi mese di 2 cifre, poi ancora carattere "/", po anno di 4 cifre, poi un carattere di spazio, poi l'ora di 2 cifre, un carattere di ":", e iminuti (sempre due cifre)


il pattern puoi definirlo come ti pare,basta che usi gli elementi che lo costituiscono.

d = carattere che rappresenta una cifra del giorno
m = carattere che rappresenta una cifra del mese
y = carattere che rappresenta una cifra dell'anno

h = carattere che rappresenta una cifra dell'ora
M = carattere che rappresenta una cifra del minuto
s = carattere che rappresenta una cifra del secondo.


poi in mezzo ci infili i separatori che vuoi

patrix03
07-05-2004, 11:13
il pattern corretto è:
"dd/MM/yyyy hh:mm:ss"

G Era
y Year
M Month in year
w Week in year
W Week in month
D Day in year
d Day in month
F Day of week in month
E Day in week
a Am/pm marker
H Hour in day
k Hour in day
K Hour in am/pm
h Hour in am/pm
m Minute in hour
s Second in minute
S Millisecond
z Time zone (Pacific Standard)
Z Time zone


il pattern specifica al SimpleDateFormat come deve cercare di "renderizzare" la data. Praticamente il formato in cui vuoi che venga rappresentata. Le lettere che ti ho specificato sono chiavi particolare che identificano all'interno della stringa di formattazione i parametri della data.

"dd/MM/yyyy hh:mm:ss" = 14/12/2001 10:34:21
"dd/MM/yy hh:mm:ss" = 14/12/01 10:34:21
"dd/MM/yy" = 14/12/01
"MM/dd/yyyy" = 12/14/2001

trevor
07-05-2004, 11:22
ah ecco, avevo invertiro minuti e mesi, grazie patrix :D

maximum
07-05-2004, 11:30
Ragazzi, tutto chiaro, c'è solo qualcosa che non va.
Uso la seguente funzione:


static public String getFormattedDateNew(java.util.Date date) throws ParseException
{
if (date==null)
return "";
else
{
String formato = "dd/mm/yyyy";
SimpleDateFormat formatter = new SimpleDateFormat(formato,Locale.ITALY);
return formatter.format(date);
}
}

Però mi ritorna la data anzichè 01/06/2004 --> 01/00/2004 :confused: :confused:
Ma io nel DB come mese, ho 06, perchè? :master:

Loading