java - 如果 DST 格式不正确,如何获取时区偏移量?

标签 java timezone java-time timezone-offset

我还没有找到一种在不受夏令时干扰的情况下获取时区偏移量的方法。

LocalDateTime dt = LocalDateTime.now();
...
ZoneId zone = ZoneId.of(s);
ZonedDateTime zdt = dt.atZone(zone);
ZoneOffset offset = zdt.getOffset();

这看起来可行,但初始数据时间可能会受到 DST 的影响。

还有这个:

int rawOffset = tZone.getRawOffset();

但是,这始终是一个正数,因此我们永远不会返回 -05:00

所以我想要的是一种在不受 DST 干扰的情况下获得偏移量的方法。有什么想法吗?

最佳答案

使用ZoneRules.getStandardOffset(Instant) .

ZoneId zone = ZoneId.of(s);
ZoneRules rules = zone.getRules();
ZoneOffset standardOffset = rules.getStandardOffset(Instant.now());

关于java - 如果 DST 格式不正确,如何获取时区偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44397875/

相关文章:

java - DAO 实现的最佳实践

java - kubernetes 中 java 应用程序的应用程序配置

ios - 将 UTC 时间转换为当前时区时间时转换为错误的时间

java-8 - 如何使用 Java8 Date API 将 "December 15, 2009"解析为 Date?

java - 无法解决 android studio 中的符号 'java.time.LocalDate' 错误

android - 按语言环境顺序获取工作日

java - 有关 Spring 应用程序中 JDBC 中 SQL 指令的一些信息

java - HiveMQ Prometheus 扩展 NoClassDefFoundError。无法启动扩展

Java时区搞砸了

python - 1984 年 3 月 16 日发生了什么?