Java 8 的 ZoneOffset 是不是考虑了夏令时?

Posted

技术标签:

【中文标题】Java 8 的 ZoneOffset 是不是考虑了夏令时?【英文标题】:Does Java 8’s ZoneOffset account for DST?Java 8 的 ZoneOffset 是否考虑了夏令时? 【发布时间】:2018-09-19 20:15:18 【问题描述】:

正如我在标题中提到的,Java 8 的 ZoneOffset 是否考虑了夏令时?我可以在不同的夏季/冬季时间有不同的区域偏移量吗?

【问题讨论】:

docs.oracle.com/javase/8/docs/api/java/time/ZoneOffset.html 【参考方案1】:

不,ZoneOffset 是不变的。要考虑夏令时(夏令时),您需要一个ZoneId,它考虑了 DST 和 UTC 偏移的其他变化。因此将对应于夏季和冬季不同的ZoneOffsets如果您的时区使用 DST(远离所有时区)。

编辑:ZoneOffsetZoneId 的子类,所以你可能会说ZoneOffset 也是ZoneId 的一种。但是一种特殊的ZoneId,偏移量永远不会改变。这种继承关系并不能反映现实生活中偏移量和区域之间的关系,但之所以这样做是因为它在编程中经常很实用。

【讨论】:

以上是关于Java 8 的 ZoneOffset 是不是考虑了夏令时?的主要内容,如果未能解决你的问题,请参考以下文章

Java 17 java.lang.reflect.InaccessibleObjectException:无法将字段设为私有最终 java.time.ZoneOffset

有啥理由使用 ZoneId.of("UTC") 而不是 ZoneOffset.UTC?

ZoneOffset的ID无效

java8及8之前日期相关类

如何在Java 8中获得UTC + 0日期?

JAVA8 LocalDateTime