Heim >Java >javaLernprogramm >Wie konvertiere ich java.util.Date in Instant, OffsetDateTime oder ZonedDateTime von java.time?

Wie konvertiere ich java.util.Date in Instant, OffsetDateTime oder ZonedDateTime von java.time?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-03 11:24:29725Durchsuche

How do I convert java.util.Date to java.time's Instant, OffsetDateTime, or ZonedDateTime?

Konvertieren Sie java.util.Date in java.times Instant, OffsetDateTime oder ZonedDateTime

Während wir auf das moderne java.time-Framework migrieren , ist es wichtig zu wissen, wie man ältere java.util.Date-Objekte in die entsprechenden java.time-Typen konvertiert. Hier ist eine Übersicht der Äquivalenzen:

java.util.Date to Instant

Beide stellen einen Moment in UTC dar, daher ist die Umrechnung unkompliziert:

<code class="java">Instant instant = myUtilDate.toInstant();

java.util.Date myUtilDate = java.util.Date.from(instant);</code>

java.util.Date zu OffsetDateTime oder ZonedDateTime von java.time

Da diese Typen Zeitzoneninformationen enthalten, ist das Extrahieren der Zone aus dem alten Datum erforderlich:

<code class="java">// If the legacy date is a GregorianCalendar (which can hold time zone info)
if (myUtilCalendar instanceof GregorianCalendar) {
    GregorianCalendar gregCal = (GregorianCalendar) myUtilCalendar;
    ZonedDateTime zdt = gregCal.toZonedDateTime(); // ZonedDateTime with time zone

    java.util.Calendar myUtilCalendar = java.util.GregorianCalendar.from(zdt);
}</code>

Zusätzliche Konvertierungszuordnungen

Legacy Type java.time Equivalent Additional Notes
java.util.Calendar Instant Converts to the start of the day in UTC
java.util.GregorianCalendar ZonedDateTime Retains time zone information
java.util.LocalDate ZonedDateTime Requires a time zone to determine the date
java.util.LocalTime Instant Converts to the start of the day in UTC
java.util.LocalDateTime ZonedDateTime Requires a time zone to determine the date and time

Wichtige Überlegungen

  • Konvertierung von einem java.util.Date in ein Der Typ java.time kann zu Präzisionsverlusten führen, da die Nanosekundenauflösung von den Legacy-Klassen nicht unterstützt wird.
  • Bei der Konvertierung in OffsetDateTime oder ZonedDateTime müssen die Zeitzoneninformationen beibehalten werden, um eine korrekte Interpretation sicherzustellen.
  • Es wird dringend empfohlen, java.time-Typen in neuem Code zu verwenden, um die Präzision und Konsistenz zu verbessern.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich java.util.Date in Instant, OffsetDateTime oder ZonedDateTime von java.time?. 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