首頁  >  文章  >  Java  >  ZonedDateTime和OffsetDateTime之間的差異是什麼

ZonedDateTime和OffsetDateTime之間的差異是什麼

青灯夜游
青灯夜游原創
2019-03-09 10:03:015387瀏覽

ZonedDateTime和OffsetDateTime都是Java 8 DateTime API中非常流行的類別;兩者都可以在時間線上儲存一個精確到奈秒的瞬間。那麼它們之間有什麼不同之處嗎?以下這篇文章就來帶了解ZonedDateTime和OffsetDateTime之間的差別,希望對大家有幫助。 【影片教學推薦:Java教學

ZonedDateTime和OffsetDateTime之間的差異是什麼

#什麼是ZonedDateTime?

ZonedDateTime是ISO-8601日曆系統(例:2007-12-03T10:15:30 01:00 Europe/Paris)中具有時區的日期時間的不可變表示。它持有相當於三個獨立物件的狀態:localdatetime、zoneid和已解析的zoneoffset。

在這裡,ZoneID決定偏移量的變化方式和時間。因此,不能自由設定偏移量,因為區域控制哪些偏移量是有效的。

要取得特定區域的目前ZonedDateTime,我們將使用:

ZoneId zone = ZoneId.of("Europe/Berlin");
ZonedDateTime zonedDateTime = ZonedDateTime.now(zone);

ZonedDateTime類別也提供了將給定日期從一個時區轉換為另一個時區的內建方法:

ZonedDateTime destZonedDateTime = sourceZonedDateTime.withZoneSameInstant(destZoneId);

最後,它完全了解DST並處理夏令時調整。當我們想要在特定時區中顯示日期時間欄位時,它通常很有用。

什麼是OffsetDateTime?

OffsetDateTime是日期時間的不可變表示,它與ISO-8601日曆系統(如2007-12-03T10:15:30 01:00)中的UTC/Greenwich時間存在偏移。換句話說,它存儲所有的日期和時間字段,精確到納秒,以及與GMT/UTC的偏移量。

讓我們從GMT / UTC 取得目前的  OffsetDateTime ,並偏離兩小時:

ZoneOffset zoneOffSet= ZoneOffset.of("+02:00");
OffsetDateTime offsetDateTime = OffsetDateTime.now(zoneOffSet);

ZonedDateTime和OffsetDateTime之間的差異

##ZonedDateTime和OffsetDateTime之間的差異

#ZonedDateTime:

 ● 儲存所有日期和時間字段,精確度為奈秒,時區,區域偏移用於處理模糊的本地日期時間

# ● 無法自由設定偏移,因為區域控制有效的偏移值

 ● 完全支援DST並處理夏令時調整

 ● 在使用者特定的時區顯示日期時間欄位非常方便

OffsetDateTime:

 ● 儲存所有日期和時間字段,精確度為奈秒,以及與GMT / UTC的偏移量(無時區資訊)

 ● 應該用於在資料庫中儲存日期或透過網路進行通訊######以上就是這篇文章的全部內容,希望能對大家的學習有所幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! ! ###

以上是ZonedDateTime和OffsetDateTime之間的差異是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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