SimpleDateFormat Date liefert unerwartetes Ergebnis

latogt

Grünschnabel
Hallo,

kann mir jemand zum Thema SimpleDateFormat weiterhelfen? Habe da ein kleines Problem, dass ich aber nicht verstehe. Vielleicht kann mir das jemand erklären:

Code:
SimpleDateFormat sdf = new SimpleDateFormat("M-dd-yyyy HH:mm");
Date date = sdf.parse("7-15-2010 17:30");
println  date.getMonth();
println  date.getDay();
println date.getYear();
println  date.getHours();
println  date.getMinutes();

Als Ausgab erwarte ich:
7
15
2010
17
30

Es kommt jedoch heraus:
6
4
110
17
30

Warum scheint die untere Ausgabe und nicht meine erwartete Ausgabe?
 
date.getMonth();
usw. ist deprecated und sollte nicht verwendet werden. Mach am einfachsten ein toString() um den Zeitpunkt formatiert auszugeben.

Du bekommst da die java.util.Calendar Repräsentation zurück, da ist Januar=0. Geparsed wird es richtig, wie du bei der toString Ausgabe siehst.

Ansonsten darf man SimpleDateFormat nicht multithreaded verwenden.
 
Zuletzt bearbeitet:
Du könntest dir ein Calendar-Objekt anlegen und mit Hilfe dessen deine Werte holen...

z.B.
Java:
Calendar cal = Calendar.getInstance(); // Gets a calendar using the default time zone and locale.
cal.setTime(date);
cal.get(Calendar.DAY_OF_MONTH);

Oder du drehst das Spiel mit dem SimpleDateFormatter einfach wieder um...
 

Neue Beiträge

Zurück