我需要预测下一个至少2个时区转换何时将用于特定时区。
Java 8提供了新的java.time
API,特别是java.time.zone
。 ZoneRules.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));
输出: