Meine Zeitzone ist MEZ (Berlin).
Und während ich Tests Joda des Datetime bemerkt einige seltsame Dinge:ungerade ergebnisse in Joda DateTime für 01.04.1893
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
A 6 Minuten 32 Sekunden in der Zeitzone in eine nicht vorhandene Zeit resultierende Verschiebung ??
Ich muss sagen, dass dies sehr unerwartet ist, da ich keine Zeitzoneninformationen angegeben habe und daher nicht mit dieser Art von Problem konfrontiert wurde.
Wenn im März 1893 CET (Berlin) nicht existiert - warum wählt new DateTime(1893, 3, 31, 0, 0, 0, 0)
nicht die Zeitzone, die der angegebenen Zeit entspricht (d. H. 0 Minuten und 0 Sekunden)?
Was sind meine Optionen, um die richtige Zeit mit DateTime zu bekommen?
- BEARBEITEN -
Das Problem scheint die toDate(). Ich hatte es vor dem Stellen der Frage redigiert.
Joda selbst funktioniert eigentlich in Ordnung:
new DateTime(1893, 3, 31, 0, 0, 0, 0);
=> 1893-01-01T00:00:00.000+00:53:28
Es ist nur so, dass die Umstellung auf Datum Teil des Offset in Minuten und Sekunden bewegt.
IOW: Es ist kein Fehler, es ist eine Funktion. Buchstäblich. –
Danke für die Links. Ich sehe, dass CET vor diesem Datum nicht existierte. Und ich sehe, dass Joda tatsächlich das Datum korrekt erstellt. Mein Problem scheint mit der Konvertierung zu java.util.Date zu sein, die die Verschiebung nicht gut behandelt (siehe meine Bearbeitung). Aber das ist wahrscheinlich eher ein Problem mit Date als DateTime. – Stroboskop