Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen ZonedDateTime und OffsetDateTime?

Was ist der Unterschied zwischen ZonedDateTime und OffsetDateTime?

青灯夜游
青灯夜游Original
2019-03-09 10:03:015383Durchsuche

ZonedDateTime und OffsetDateTime sind beide sehr beliebte Klassen in der Java 8 DateTime API; beide können einen nanosekundengenauen Moment auf einer Zeitleiste speichern. Gibt es also Unterschiede zwischen ihnen? Der folgende Artikel erklärt den Unterschied zwischen ZonedDateTime und OffsetDateTime. Ich hoffe, dass er für alle hilfreich ist. [Empfohlene Video-Tutorials: Java-Tutorial]

Was ist der Unterschied zwischen ZonedDateTime und OffsetDateTime?

Was ist ZonedDateTime?

ZonedDateTime ist eine unveränderliche Darstellung eines Datums und einer Uhrzeit mit Zeitzonen im ISO-8601-Kalendersystem (Beispiel: 2007-12-03T10:15:30+01:00 Europa/ Paris). Es enthält das Äquivalent von drei separaten Objekten: „localdatetime“, „zoneid“ und „resolved zoneoffset“.

Hier bestimmt die ZoneID, wie und wann sich der Offset ändert. Deshalb können Offsets nicht frei eingestellt werden, da die Zone steuert, welche Offsets gültig sind.

Um die aktuelle ZonedDateTime für eine bestimmte Zone zu erhalten, verwenden wir:

ZoneId zone = ZoneId.of("Europe/Berlin");
ZonedDateTime zonedDateTime = ZonedDateTime.now(zone);

Die ZonedDateTime-Klasse bietet auch integrierte Methoden zum Konvertieren eines bestimmten Datums von einer Zeitzone in eine andere:

ZonedDateTime destZonedDateTime = sourceZonedDateTime.withZoneSameInstant(destZoneId);

Endlich versteht es die Sommerzeit vollständig und verarbeitet Sommerzeitanpassungen. Dies ist oft nützlich, wenn wir ein Datum/Uhrzeit-Feld in einer bestimmten Zeitzone anzeigen möchten.

Was ist OffsetDateTime?

OffsetDateTime ist eine unveränderliche Darstellung von Datum und Uhrzeit, die mit der UTC/Greenwich-Zeit im ISO-8601-Kalendersystem identisch ist (z. B. 2007-12-03T10:15:30+01). :00) Es gibt einen Offset. Mit anderen Worten, es speichert alle Datums- und Zeitfelder mit einer Genauigkeit von Nanosekunden und Offsets von GMT/UTC.

Lassen Sie uns die aktuelle OffsetDateTime von GMT/UTC abrufen, versetzt um zwei Stunden:

ZoneOffset zoneOffSet= ZoneOffset.of("+02:00");
OffsetDateTime offsetDateTime = OffsetDateTime.now(zoneOffSet);

Differenz zwischen ZonedDateTime und OffsetDateTime

ZonedDateTime:

● Speichert alle Datums- und Zeitfelder mit Nanosekundengenauigkeit, Zeitzone und Zonenversatz für den Umgang mit mehrdeutigen lokalen Datums- und Uhrzeitangaben

● Dies ist nicht möglich Legen Sie den Offset frei fest, da die Zone den effektiven Offsetwert steuert

● Unterstützt die Sommerzeit vollständig und verarbeitet Sommerzeitanpassungen

● Es ist sehr praktisch, Datums-/Uhrzeitfelder in benutzerspezifischen Zeitzonen anzuzeigen

OffsetDateTime:

● Speichert alle Datums- und Zeitfelder mit Nanosekundengenauigkeit und Offset von GMT/UTC (keine Zeitzoneninformationen)

● Sollte sein Wird verwendet, um Daten in einer Datenbank zu speichern oder über das Netzwerk zu kommunizieren

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich sein wird. Weitere spannende Inhalte finden Sie in den entsprechenden Tutorial-Kolumnen auf der chinesischen PHP-Website! ! !

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen ZonedDateTime und OffsetDateTime?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn