Meine Zeitzone ist CET (Berlin).
Und beim Testen von Jodas DateTime sind mir einige seltsame Dinge aufgefallen:
new DateTime(1893, 4, 1, 0, 0, 0, 0);
=> java.lang.IllegalArgumentException: Illegal instant due to time zone offset transition:
new DateTime(1893, 3, 31, 0, 0, 0, 0).toDate();
=> Fri Mar 31 00:06:32 CET 1893
Eine Verschiebung von 6 Minuten und 32 Sekunden in der Zeitzone, die zu einer nicht existierenden Zeit führt?
Ich muss sagen, dass dies sehr unerwartet ist, da ich keine Zeitzoneninformationen angegeben habe und daher nicht erwartet habe, dass ich auf diese Art von Problem stoße.
Wenn es im März 1893 die CET (Berlin) nicht gibt - warum gibt es dann nicht new DateTime(1893, 3, 31, 0, 0, 0, 0)
die Zeitzone auswählen, die der von mir angegebenen Zeit entspricht (d. h. 0 Minuten und 0 Sekunden)?
Welche Möglichkeiten habe ich, um die richtige Zeit mit DateTime zu erhalten?
-- EDIT --
Das Problem scheint die Funktion toDate() zu sein. Ich hatte es vor dem Posten der Frage heraus bearbeitet.
Joda selbst funktioniert eigentlich gut:
new DateTime(1893, 3, 31, 0, 0, 0, 0);
=> 1893-01-01T00:00:00.000+00:53:28
Bei der Konvertierung in Datum wird ein Teil des Offsets in die Minuten und Sekunden verschoben.