Perché non ottengo l'anno giusto usando SimpleDateFormat in Java?
-
06-07-2019 - |
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.
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