Frage

ich Daten in einem MySql Format zu analysieren versucht, lief ich über SimpleDateFormat. Ich kann den richtigen Tag und Monat bekommen, aber ich habe ein seltsames Ergebnis für das Jahr:

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

Ausgänge:

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

Ich habe versucht, das Format zu ändern, um zu YYYY-MM-dd (bekam einen Fehler) und yy-MM-dd (tat nichts). Ich programmiere auf Android, weiß nicht, ob es wichtig ist.

Für jetzt, ich umgehen, dass eine Spaltung mit, aber es ist schmutzig und verhindert, dass mich von i18n Funktionen verwendet wird.

War es hilfreich?

Lösung

Das Jahr ist im Verhältnis zu 1900. Das ist ein „Feature“ der Date Klasse ist. Versuchen Sie Calender zu verwenden.

Andere Tipps

Dank Aaron, die richtige Version:

Calendar c = Calendar.getInstance(); 
c.setTime(sdf.parse(date));
System.println(c.get(Calendar.YEAR));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top