我需要预测下一个至少2个时区转换何时将用于特定时区。

Java 8提供了新的java.time API,特别是java.time.zoneZoneRules.getTransitions()看起来确实正是我所需要的,但是它没有列出“澳大利亚/悉尼” 2010年以后的任何内容。

确定下两个时区转换的日期/时间/偏移量的最可靠方法是什么?

最佳答案

ZoneRules.getTransitions()方法不会列出所有过渡,直到无限远(显然)为止。这将获得以下两个过渡:

ZoneId zoneId = ZoneId.of("Australia/Sydney");
ZoneRules rules = zoneId.getRules();

ZoneOffsetTransition nextTransition = rules.nextTransition(Instant.now());
System.out.println("Next transition at: " +
        nextTransition.getInstant().atZone(zoneId));

ZoneOffsetTransition nextNextTransition =
        rules.nextTransition(nextTransition.getInstant());
System.out.println("Next transition after that at: " +
        nextNextTransition.getInstant().atZone(zoneId));
输出:

10-07 15:27