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-Typ | Java.time-Äquivalent | Zusätzlich Notizen |
---|---|---|
java.util.Calendar | Instant | Konvertiert in den Beginn des Tages in UTC |
java.util.GregorianCalendar | ZonedDateTime | Behält Zeitzoneninformationen |
java.util.LocalDate | ZonedDateTime | Erfordert eine Zeitzone, um das Datum zu bestimmen |
java.util.LocalTime | Instant | Konvertiert in der Beginn des Tages in UTC |
java.util.LocalDateTime | ZonedDateTime | Erfordert eine Zeitzone, um Datum und Uhrzeit zu bestimmen |
Wichtige Überlegungen
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