当夏令时结束时,时钟会倒退 1 小时。这意味着 2017 年 11 月 5 日将是 2 01:30 AM
。因此,它的工作原理如下
01:59:58
01:59:59
01:00:00
01:00:01
正如您所见,当时间接近 02:00:00 时,它将倒退 1 小时至 01:00:00。这意味着 11 月 5 日将有一个小时的重叠。我需要检测给定的时间是否在重叠期间内?
最佳答案
类似于my answer在你之前的 SO 帖子中,询问区域规则,然后你就可以:
public static boolean isAmbivalent(LocalDateTime ldt, ZoneId zoneId) {
return zoneId.getRules().getValidOffsets(ldt).size() > 1;
}
使用示例:
LocalDateTime ldt = LocalDateTime.of(2017, 11, 5, 1, 30);
ZoneId zoneId = ZoneId.of("America/Chicago");
System.out.println(isAmbivalent(ldt, zoneId)); // true, offsets either -5:00 or -6:00
关于java - 如何检测不明确的 DST 重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43210434/