Domanda

Sto provando ad analizzare i dati in un formato MySql , mi sono imbattuto in SimpleDateFormat . Posso ottenere il giorno e il mese corretti, ma ho ottenuto uno strano risultato per l'anno:

date = 2009-06-22;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
Date d = sdf.parse(date);
System.println(date);
System.println(d.getDate());
System.println(d.getMonth());
System.println(d.getYear());

Output:

2009-06-22
22           OK
5            Hum... Ok, months go from 0 to 11
109          o_O WTF ?

Ho provato a cambiare il formato in YYYY-MM-dd (ho ricevuto un errore) e yy-MM-dd (non ha fatto nulla). Sto programmando su Android, non so se è importante.

Per ora, lo evito usando una divisione, ma è sporco e mi impedisce di utilizzare le funzionalità i18n.

È stato utile?

Soluzione

L'anno è relativo al 1900. Questa è una funzione "quot". della classe Date . Prova a usare Calendario .

Altri suggerimenti

Grazie ad Aaron, la versione giusta:

Calendar c = Calendar.getInstance(); 
c.setTime(sdf.parse(date));
System.println(c.get(Calendar.YEAR));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top