„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 06.11.2024
Durchsuche:123

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

Bei der Migration zum modernen java.time-Framework , 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 Konvertierung unkompliziert:

Instant instant = myUtilDate.toInstant();

java.util.Date myUtilDate = java.util.Date.from(instant);

java.util.Date zu java.time's OffsetDateTime oder ZonedDateTime

Da diese Typen enthalten Zeitzoneninformationen. Das Extrahieren der Zone aus dem alten Datum ist erforderlich:

// 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);
}

Zusätzliche Konvertierungszuordnungen

Legacy-TypJava.time-ÄquivalentZusätzlich Notizen
java.util.CalendarInstantKonvertiert in den Beginn des Tages in UTC
java.util.GregorianCalendarZonedDateTimeBehält Zeitzoneninformationen
java.util.LocalDate ZonedDateTimeErfordert eine Zeitzone, um das Datum zu bestimmen
java.util.LocalTimeInstantKonvertiert in der Beginn des Tages in UTC
java.util.LocalDateTimeZonedDateTimeErfordert eine Zeitzone, um Datum und Uhrzeit zu bestimmen

Wichtige Überlegungen

  • Die Konvertierung von einem Typ „java.util.Date“ in einen Typ „java.time“ kann zu einem Genauigkeitsverlust führen Die Nanosekundenauflösung wird von den Legacy-Klassen nicht unterstützt.
  • 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 zu verwenden in neuem Code für mehr Präzision und Konsistenz.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3