什么是LocalDateTime?
ISO-8601日历系统中不带时区的日期时间。
该类不存储时区,所以适合日期的描述,比如用于生日、deadline等等。
但是如果没有偏移量/时区等附加信息,一个时间是不能表示时间线上的某一时刻的。
什么是OffsetDateTime?
ISO-8601日历系统中与UTC偏移量有关的日期时间。
存储有精确到纳秒的日期时间,以及偏移量。
OffsetDateTime可简单认为是LocalDateTime和ZoneOffset的组合。
什么是ZonedDateTime?
ISO-8601国际标准日历系统中带有时区的日期时间。
存储有精确到纳秒的日期时间,以及一个时区。
ZonedDateTime可简单认为是LocalDateTime和ZoneId的组合。
总结
OffsetDateTime、ZonedDateTime和Instant它们三都能在时间线上以纳秒精度存储一个瞬间
,也可理解我某个时刻
,LocalDateTime是不行的。
OffsetDateTime和Instant可用于模型的字段类型,因为它们都表示瞬间值并且还不可变,所以适合网络传输或者数据库持久化。
ZonedDateTime不适合网络传输/持久化,因为即使同一个ZoneId时区,不同地方获取到瞬时值也有可能不一样。
参考:
LocalDateTime、OffsetDateTime、ZonedDateTime互转,这一篇绝对喂饱你