Pregunta

Intenté analizar datos en un formato MySql , me encontré con SimpleDateFormat . Puedo obtener el día y el mes adecuados, pero obtuve un resultado extraño para el año:

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());

Salidas:

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

Intenté cambiar el formato a AAAA-MM-dd (recibí un error) y aa-MM-dd (no hizo nada). Estoy programando en Android, no sé si es importante.

Por ahora, evito eso usando una división, pero está sucio y me impide usar las funciones de i18n.

¿Fue útil?

Solución

El año es relativo a 1900. Esa es una "característica". de la clase Date . Intente utilizar el Calendario .

Otros consejos

Gracias a Aaron, la versión correcta:

Calendar c = Calendar.getInstance(); 
c.setTime(sdf.parse(date));
System.println(c.get(Calendar.YEAR));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top