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:
● 存储所有日期和时间字段,精度为纳秒,时区,区域偏移用于处理模糊的本地日期时间
● 无法*设置偏移,因为区域控制有效的偏移值
● 完全支持DST并处理夏令时调整
● 在用户特定的时区显示日期时间字段非常方便
OffsetDateTime:
● 存储所有日期和时间字段,精度为纳秒,以及与GMT / UTC的偏移量(无时区信息)
● 应该用于在数据库中存储日期或通过网络进行通信
以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注相关教程栏目!!!
以上就是ZonedDateTime和OffsetDateTime之间的区别是什么的详细内容,更多请关注其它相关文章!
上一篇: Java多线程基本使用
下一篇: java抽象类和接口
推荐阅读
-
锚文本和超链接的区别是什么,超级链接与其作用介绍
-
封装app是什么意思,盘点封装app和原生app的区别
-
重定向是什么意思,重定向和转发的区别
-
重定向是什么意思,简述重定向和转发的区别
-
call和apply的区别是什么(apply的用法和搭配)
-
封装app是什么意思,盘点封装app和原生app的区别
-
linkedlist和arraylist的区别是什么(java的四种引用关系从强到弱)
-
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
-
linkedlist和arraylist的区别是什么(java的四种引用关系从强到弱)
-
call和apply的区别是什么(apply的用法和搭配)