确定未来的时区转换
Determine future timezone transitions
我需要预测下一个至少 2 个时区转换将针对特定时区的时间。
Java 8 提供了新的 java.time
API,特别是 java.time.zone
。 ZoneRules.getTransitions()
看起来正是我需要的,但是它没有列出 "Australia/Sydney".
2010 年之后的任何内容
确定下一个 2 时区转换的最可靠方法是什么 date/time/offset?
方法 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));
输出:
Next transition at: 2016-10-02T03:00+11:00[Australia/Sydney]
Next transition after that at: 2017-04-02T02:00+10:00[Australia/Sydney]
我需要预测下一个至少 2 个时区转换将针对特定时区的时间。
Java 8 提供了新的 java.time
API,特别是 java.time.zone
。 ZoneRules.getTransitions()
看起来正是我需要的,但是它没有列出 "Australia/Sydney".
确定下一个 2 时区转换的最可靠方法是什么 date/time/offset?
方法 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));
输出:
Next transition at: 2016-10-02T03:00+11:00[Australia/Sydney]
Next transition after that at: 2017-04-02T02:00+10:00[Australia/Sydney]