栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ZonedDateTime和OffsetDateTime有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ZonedDateTime和OffsetDateTime有什么区别?

问:java 8 ZonedDateTime和OffsetDateTime有什么区别?

javadocs这样说:

OffsetDateTime
ZonedDateTime
Instant
所有商店的时间线,以纳秒的精度瞬间,
Instant
是最简单的,只是代表了瞬间。
OffsetDateTime
增加了即时从UTC
/格林威治,这使得能够获得当地的日期时间偏移。
ZonedDateTime
增加全职区规则”。

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

从而之间的差

OffsetDateTime
ZonedDateTime
是,后者包括规则盖夏令时调整和各种其它异常现象。

简单地说:

时区
=(UTC偏移量 +异常规则)


问:

OffsetDateTime
将日期写入数据库时​​,应根据文档使用,但我不知道为什么。

具有本地时间偏移的日期始终表示同一时刻,因此具有稳定的顺序。相比之下,面对相应时区的规则进行调整时,具有完整时区信息的日期的含义就不稳定。(并且确实会发生这种情况;例如,将来的日期时间值。)因此,如果您存储然后检索一个

ZonedDateTime
实现,则会出现问题:

  • 它可以存储计算出的偏移量…,然后检索到的对象可能具有与zone-id的当前规则不一致的偏移量。

  • 它可以丢弃计算出的偏移量…,然后检索到的对象在绝对/通用时间轴中表示的点与所存储的不同。

如果使用Java对象序列化,则Java
9实现采用第一种方法。可以说这是处理此问题的“更正确”的方法,但是似乎没有记录在案。(JDBC驱动程序和ORM绑定可能正在做出类似的决定,并有望正确解决。)

但是,如果您正在编写一个手动存储日期/时间值或依赖的应用程序

java.sql.DateTime
,那么可能会避免区域ID的复杂性。因此,建议。

请注意,其含义/顺序随时间推移 不稳定的日期 可能会对 应用程序 造成
问题。而且由于更改区域规则只是边缘情况,因此这些问题很可能在意外的时候出现。


提出建议的(可能)第二个原因是a的构造

ZonedDateTime
在某些时候是模棱两可的。例如,在您“放回时钟”的时间段中,将本地时间和zone-
id组合可以为您提供两个不同的偏移量。该
ZonedDateTime
会一贯挑一个比其他…但是这并不总是正确的选择。

现在,对于以

ZonedDateTime
这种方式构造值的任何应用程序来说,这可能都是个问题。但是从某个人构建企业应用程序的角度来看,当(可能不正确的)
ZonedDateTime
值保持不变并在以后使用时,这是一个更大的问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595279.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号