將java.util.Date 轉換為java.time 類型
問題: java.util.Date 之間的轉換或java.util.Calendar 物件和java.time 框架類型可能會令人困惑。理解類型及其映射至關重要。
解決方案:
Java 8 引入了 java.time 框架,提供了幾種用於操作日期和時間的類型。匹配 java.util.Date 實例的適當 java.time 類型由所需的精確度和時區決定。
類型與轉換:
- Instant: 表示 UTC 中的某個時刻,類似於 java.util.Date。使用 Instant.ofEpochMilli(myUtilDate.getTime()) 進行轉換。
-
OffsetDateTime: 與 UTC 存在偏移的掛鐘時間。將偏移量應用於 Instant 以建立 OffsetDateTime。使用 OffsetDateTime.ofInstant(instant, ZoneOffset).
-
ZonedDateTime: 具有特定時區的掛鐘時間。將 ZoneId 應用於 Instant 以建立 ZonedDateTime。使用 ZonedDateTime.ofInstant(instant, ZoneId).
-
LocalDate: 沒有時間或時區的日期。透過 ZonedDateTime 取得 LocalDate: ZonedDateTime.toLocalDate().
-
LocalTime: 沒有日期或時區的時間。類似地,從 ZonedDateTime 取得 LocalTime: ZonedDateTime.toLocalTime().
-
LocalDateTime: 沒有時區的日期和時間的組合。請注意,這可能很少使用,因為它代表非特定時間點。使用ZonedDateTime.toLocalDateTime().
轉換陷阱:
- 從java.time ,精度可能會遺失(奈秒截斷為毫秒)。
- 從 java.util.Date 轉換為 LocalDate 或 LocalDateTime 時,需要時區來決定日期或時間。
結論:
理解java.util.Date 或java.util.Calendar 與java.time 類型之間的映射對於無縫互通至關重要。 Java.time提供了健壯且準確的日期時間處理,並透過便捷的方法支援新舊框架之間的轉換。
以上是如何將 java.util.Date 轉換為 java.time 類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!