Rumah >Java >javaTutorial >ZonedDateTime和OffsetDateTime之间的区别是什么

ZonedDateTime和OffsetDateTime之间的区别是什么

青灯夜游
青灯夜游asal
2019-03-09 10:03:015506semak imbas

ZonedDateTime和OffsetDateTime都是Java 8 DateTime API中非常流行的类;两者都可以在时间线上存储一个精确到纳秒的瞬间。那么它们之间有什么不同之处吗?下面本篇文章就来带了解一下ZonedDateTime和OffsetDateTime之间的区别,希望对大家有所帮助。【视频教程推荐:Java教程

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的偏移量(无时区信息)

 ● 应该用于在数据库中存储日期或通过网络进行通信

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

Atas ialah kandungan terperinci ZonedDateTime和OffsetDateTime之间的区别是什么. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn