Warum kann ich nicht bekommen das Jahr direkt mit Simple in Java?
-
06-07-2019 - |
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.
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