將java.util.Date 轉換為java.time 的Instant、OffsetDateTime 或ZonedDateTime
當我們遷移到現代javatime.時,了解如何將遺留java.util.Date 物件轉換為適當的java.time 類型至關重要。以下是等效項的概述:
java.util.Date 到Instant
兩者都代表UTC 中的時刻,因此轉換很簡單:
<code class="java">Instant instant = myUtilDate.toInstant(); java.util.Date myUtilDate = java.util.Date.from(instant);</code>
java.util.Date 到java.time 的OffsetDateTime 或ZonedDateTime
由於這些類型包含時區信息,因此需要從舊Date 中提取區域:
由於這些類型包含時區信息,因此需要從舊Date 中提取區域:<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>
其他轉換映射
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 |
重要注意事項
以上是如何將 java.util.Date 轉換為 java.time 的 Instant、OffsetDateTime 或 ZonedDateTime?的詳細內容。更多資訊請關注PHP中文網其他相關文章!