我讀過的文件,但我還是當我應該使用一個不能獲得或其他:java 8 ZonedDateTime和OffsetDateTime有什麼區別?
根據文檔OffsetDateTime
應當使用時寫數據庫的日期,但我不明白爲什麼。
我讀過的文件,但我還是當我應該使用一個不能獲得或其他:java 8 ZonedDateTime和OffsetDateTime有什麼區別?
根據文檔OffsetDateTime
應當使用時寫數據庫的日期,但我不明白爲什麼。
的Javadoc這樣說:
「
OffsetDateTime
,ZonedDateTime
和Instant
所有存儲在時間線瞬間納秒的精度Instant
是最簡單的,只是代表即時OffsetDateTime
增加了瞬間。與UTC /格林威治的偏差,可以獲得當地的日期時間,ZonedDateTime
增加了完整的時區規則。「
來源:https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html
因此OffsetDateTime
和ZonedDateTime
之間的區別是,後者包括覆蓋夏令時調整的規則。
將日期寫入數據庫時應該使用OffsetDateTime,但我不明白爲什麼。
其中一個原因是具有本地時間偏移的日期始終代表相同的時間點,因此具有穩定的順序。相比之下,具有全時區信息的日期的含義在調整各個時區的規則時是不穩定的。 (並且這些確實發生...)
如果(例如)您在日期字段上創建數據庫索引,那麼其含義/排序不穩定的日期會產生問題。
「包含涵蓋夏令時調整的規則」......以及其他異常情況。 DST只是調整日期時間值的一個原因。 –
簡單地說:[時區](https://en.wikipedia.org/wiki/Time_zone)=([Offset-From-UTC](https://en.wikipedia.org/wiki/UTC_offset)+ Rules- For-Anomalies) –
基本上'ZonedDateTime'還包含有關時區的信息,包括我閱讀的DST切換等。 – fge