Wie konvertieren von org.joda.Zeit.DateTime java.Zeit.ZonedDateTime
Habe ich eine Datenquelle mit joda time DateTime-Objekte gespeichert. Ich muss konvertieren Sie Sie in java ZonedDateTime Objekte, unter Beibehaltung der ursprünglichen Zeitzone.
Es ist nicht ausreichend, um halten Sie die offset-seit einigen DateTime-Objekte repräsentiert, die täglich wiederkehrenden Aufgaben, und diese Aufgaben müssen bei auftreten einer bestimmten Zeit in einer bestimmten Zeitzone zu jedem Datum. Sie müssen daher Folgen Sie den angegebenen Zeitzone übergänge zum Beispiel Sommer-und Winterzeit. Ich kann nicht sagen, die endgültige Verwendung der DateTime-Objekte, so dass ich benötigen, um die Zeitzone-Informationen über alle Objekte, um sicher zu sein.
How to convert from org.joda.Zeit.DateTime java.Zeit.ZonedDateTime?
Wird alle
ord.joda.Zeit.DateTimeZone.getId()
Karte, um die id in
java.Zeit.Amp; zoneid
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht alle Zeit-zone strings von Joda-Time entsprechen
java.time
aber die überwiegende Mehrheit wird als Sie basieren beide auf der IANA-tz Daten. Vergleichen SieDateTimeZone.getAvailableIDs()
zuamp; zoneid.getAvailableZoneIds()
, um zu bestimmen, die Diskrepanz. Zusätzliche Identifikatoren zugeordnet werden können, mitamp; zoneid.der(String, Map)
.Tun, die wichtigste Umwandlung in der effizienteste Weg, Sie zu Durchlaufen haben, in jedem Feld:
Beachten Sie die Verwendung von
ZoneId.SHORT_IDS
alsMap
in diesem Fall.Für eine einfachere Lösung, mit der die meisten Anwendungsfälle, aber bei niedrigerer Leistung verwenden:
Area/Locality
style Zonen zur Verfügung stehen würde, in beiden.ZoneId.SHORT_IDS
. Ansonsten, alle Unterschiede sind nur aus der späteren version der Zeitzonen-Datenbank in Joda-Time.ZoneId.of(dt.getZone().getID(), ZoneId.SHORT_IDS))
würde nichtdt.toTimeZone().toZoneId()
so gut funktionieren? es scheint lassen Sie die nitty gritty zu JodaTime-und Java-bzw..(year, month, day, hour, minute, second, millis, zone)
nicht definieren einen Punkt in der Zeit). @MuhipTezcan Antwort scheint, dieses Recht zu bekommen.Sollten Sie es vermeiden, bietet jedes Feld separat, wenn Sie die Arbeit mit der Sommerzeit-übergänge. Konvertieren mit epochMillis statt, wie im folgenden Beispiel.
Sonst verlieren Sie eine Stunde auf den Zeitpunkt des übergangs. Zum Beispiel, Deutschland umgestellt, von der Sommerzeit (GMT+2) auf Winterzeit (GMT+1) auf 29.10.2017, 03:00 GMT+2, die wird von 02:00 Uhr GMT+1. An diesem Tag haben Sie 2 Instanzen von 02:00 - in einem früheren, mit GMT+2 und später eine mit GMT+1.
Da, Sie arbeiten mit ZoneIds und nicht mit offsets, es gibt keine Möglichkeit zu wissen, welche der 2-Instanzen, die Sie wollen. Standardmäßig wird der erste angenommen wird, während der Konvertierung. Beide 02:00 GMT+2 und 02:00 GMT+1 konvertiert werden, um 02:00 Uhr GMT+2, wenn Sie
hourOfDay
zusammen mit amp; zoneid.dt.getZone().getID()
ist die richtige Methode.instant.atZone(zoneId)
?