2015-05-14 113 views

回答

99

的Javadoc這樣說:

OffsetDateTimeZonedDateTimeInstant所有存儲在時間線瞬間納秒的精度Instant是最簡單的,只是代表即時OffsetDateTime增加了瞬間。與UTC /格林威治的偏差,可以獲得當地的日期時間,ZonedDateTime增加了完整的時區規則。「

來源:https://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html

因此OffsetDateTimeZonedDateTime之間的區別是,後者包括覆蓋夏令時調整的規則。

將日期寫入數據庫時​​應該使用OffsetDateTime,但我不明白爲什麼。

其中一個原因是具有本地時間偏移的日期始終代表相同的時間點,因此具有穩定的順序。相比之下,具有全時區信息的日期的含義在調整各個時區的規則時是不穩定的。 (並且這些確實發生...)

如果(例如)您在日期字段上創建數據庫索引,那麼其含義/排序不穩定的日期會產生問題。

+4

「包含涵蓋夏令時調整的規則」......以及其他異常情況。 DST只是調整日期時間值的一個原因。 –

+17

簡單地說:[時區](https://en.wikipedia.org/wiki/Time_zone)=([Offset-From-UTC](https://en.wikipedia.org/wiki/UTC_offset)+ Rules- For-Anomalies) –

相關問題