將java.util.Date 轉換為java.time 的Instant、OffsetDateTime 或ZonedDateTime
隨著我們向現代java.time 框架遷移,了解如何將遺留java.util.Date 物件轉換為適當的java.time 類型至關重要。以下是等效項的概述:
java.util.Date 到Instant
兩者都代表UTC 中的時刻,因此轉換很簡單:
Instant instant = myUtilDate.toInstant();
java.util.Date myUtilDate = java.util.Date.from(instant);
java.util.Date 到java.time 的OffsetDateTime 或ZonedDateTime
因為這些類型包含時區訊息,從遺留日期中提取區域是必要的:// 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);
}
//如果遺留日期是GregorianCalendar(可以保存時區資訊)
if (myUtilCalendar GregorianCalendar 實例) {
GregorianCalendar gregCal = (GregorianCalendar) myUtilCalendar;
ZonedDateTime zdt = gregCal.toZonedDateTime(); // 帶時區的 ZonedDateTime
java.util.Calendar myUtilCalendar = java.util.GregorianCalendar.from(zdt);
}其他轉換映射
其他轉換映射 | ||
---|---|---|
其他註釋 | ||
即時 | 轉換為UTC 日期的開始時間 | |
java.util.GregorianCalendar | ZonedDateTime | |
.util.LocalDate | ZonedDateTime | |
java.util.LocalTime | 即時 |
java.util.LocalDateTime
]重要注意事項
從java.util.Date 轉換為java.time 類型可能會導致精度損失,如下所示遺留類別不支援奈秒解析度。
轉換為 OffsetDateTime 或 ZonedDateTime 時,必須保留時區資訊以確保正確解釋。
強烈建議使用 java.time 類型在新程式碼中提高了精度和一致性。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3