我还没有找到一种在不受夏令时干扰的情况下获取时区偏移量的方法。
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/