java - 如何检测不明确的 DST 重叠?

标签 java java-8

当夏令时结束时,时钟会倒退 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/

相关文章:

java - 如何将 JDBC4PreparedStatement 与需要 OUT 参数的 MySQL 存储过程一起使用?

java - Cocos2D 项目无法在 Android Studio 上运行

java - 当我的数据库中有序列生成的 ID 触发器时,如何使用 ADF CreateInsert?

java - RHEL 每个目录的文件数限制

java - 在 Java 8 中将 List<List<Integer>> 转换为 int[][]

Java GPA 计算结果问题

java - Hazelcast ssl 企业版

string - 反转字符串中单词中的字母

java - 模拟可选参数时出现空指针异常

collections - 确保元素列表按元素中的字段排序