」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何將 java.util.Date 轉換為 java.time 的 Instant、OffsetDateTime 或 ZonedDateTime?

如何將 java.util.Date 轉換為 java.time 的 Instant、OffsetDateTime 或 ZonedDateTime?

發佈於2024-11-06
瀏覽:310

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

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

其他轉換映射

其他轉換映射舊型java.time 等效其他註釋java.util.Calendar即時轉換為UTC 日期的開始時間轉換為UTC 日期的開始時間保留時區資訊ZonedDateTime需要時區來決定日期java.util.LocalTime即時轉換為UTC 日期的開始
java.util.GregorianCalendarZonedDateTime
.util.LocalDate

java.util.LocalDateTime

    ZonedDateTime
  • 需要時區來決定日期和時間

]How do I convert java.util.Date to java.time\'s Instant, OffsetDateTime, or ZonedDateTime? 
重要注意事項

從java.util.Date 轉換為java.time 類型可能會導致精度損失,如下所示遺留類別不支援奈秒解析度。

轉換為 OffsetDateTime 或 ZonedDateTime 時,必須保留時區資訊以確保正確解釋。

強烈建議使用 java.time 類型在新程式碼中提高了精度和一致性。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3