PDA

Visualizza la versione completa : [JAVA] GregorianCalendar e uso dei mesi


superpelo
20-12-2005, 16:09
Ciao,
ho un problema col GregorianCalendar che mi manda ai pazzi:

Ho una data che rappresenta il 20/12/2005 nel mio database. Se recupero il dato e la stampo tale data perfettamente giusta (2005-12-20), se la visualizzo in una JTable giusta (20-dic-2005).. se la passo al GregorianCalendar magicamente si trasforma in 20-11-2005.. perfettamente un mese indietro.. perch???



java.util.GregorianCalendar calendar = new java.util.GregorianCalendar();
calendar.setTime((java.sql.Date)value[2]);
String date = calendar.get(java.util.Calendar.DATE)+"/"+calendar.get(java.util.Calendar.MONTH)+"/"+calendar.get(java.util.Calendar.YEAR);
System.out.println(date;


La data che stampo un mese dietro... :cry:

LeleFT
20-12-2005, 16:16
A parte il fatto che il metodo setTime() di Calendar prevede un oggetto java.util.Date e non java.sql.Date (che sono due cose ben diverse), ma non fai prima a ricavare i 3 campi (anno, mese, giorno) su 3 interi e passarli al costruttore di GregorianCalendar direttamente?


Ciao. :ciauz:

superpelo
20-12-2005, 16:19
L'ho gi provata sta strada... prima di scoprire che accettava anche un oggetto Date (sql estensione di util) ho usato il costruttore che dici tu in questo modo:

GregorianCalendar(2005,12,20)

ma l'errore persisteva... una cosa pazzesca, mi visualizzava una roba tipo 20/0/2006!!!

:oVVoVe:

floyd
20-12-2005, 17:53
i mesi sono calcolati non da 1 a 12 ma da 0 a 11

superpelo
20-12-2005, 21:41
Quindi con java.util.Calendar.MONTH+1 ottengo il mese corretto, mentre la stessa cosa non accade con java.util.Calendar.DAY... pazzesco, non vi pare?

:confused:

LeleFT
21-12-2005, 13:35
Sarebbe pazzesco se la classe Calendar non avesse dei campi statici per i mesi: Calendar.JANUARY, Calendar.FEBRUARY, ecc...


Ciao. :ciauz:

Loading