我读过的文件,但我还是当我应该使用一个不能获得或其他: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