首頁 >Java >java教程 >如何在 java.time.LocalDateTime 和 java.util.Date 之間進行轉換?

如何在 java.time.LocalDateTime 和 java.util.Date 之間進行轉換?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-06 22:12:14230瀏覽

How do I convert between java.time.LocalDateTime and java.util.Date?

在java.time.LocalDateTime 和java.util.Date 之間轉換

Java 8 引入了新的日期和時間API,包括java .time.LocalDateTime 類,用於與時區無關的日期與時間值。然而,許多遺留程式碼庫仍然使用舊的 java.util.Date 類別。這就提出瞭如何在兩個類別之間進行轉換的問題。

雖然沒有直接的轉換方法,但以下步驟提供了解決方案:

  1. 轉換java.util.日期到即時:

    Date in = new Date();
    Instant instant = in.toInstant();
  2. 將即時轉換為LocalDateTime(指定時區):

    LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
  3. 將LocalDateTime 轉換為ZonedDateTime ( 🎜>

    將ZonedDateTime 轉換為即時:
    ZoneId systemZoneId = ZoneId.systemDefault();
    ZonedDateTime zdt = ldt.atZone(systemZoneId);
  4. 將即時轉換回java.util.Date:
    Instant convertedInstant = zdt.toInstant();
  5. 要注意的是,由於夏令時,轉換為LocalDateTime 並返回 java.util.Date 可能會導致不同的時刻節省時間。

    Date out = Date.from(convertedInstant);
    此外,java.util.Date 對 1582 年 10 月 15 日之前的日期使用不同的日曆,而 java.time.* 則始終使用 ISO 日曆。在比較 1582 年之前的日期時,這種差異可能會影響相容性。

以上是如何在 java.time.LocalDateTime 和 java.util.Date 之間進行轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn