Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确定未来的时区转换_Java_Java 8_Java Time - Fatal编程技术网

Java 确定未来的时区转换

Java 确定未来的时区转换,java,java-8,java-time,Java,Java 8,Java Time,我需要预测下一个至少2个时区转换将在什么时候针对特定时区进行 Java8提供了新的Java.timeAPI,特别是Java.time.zoneZoneRules.getTransitions()看起来正是我需要的,但是它没有为“澳大利亚/悉尼”列出2010年以后的任何内容 确定下一个2时区转换的日期/时间/偏移量的最可靠方法是什么?方法ZoneRules.getTransitions()在无限远的将来(显然)才会列出所有转换。这将获得接下来的两个转换: ZoneId zoneId = ZoneI

我需要预测下一个至少2个时区转换将在什么时候针对特定时区进行

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


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

方法
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));
输出:

下一次转换时间:2016-10-02T03:00+11:00[澳大利亚/悉尼]

之后的下一次过渡时间:2017-04-02T02:00+10:00[澳大利亚/悉尼]


是的,仍然感到惊讶的是,“getTransitions”至少没有列出到今天为止的所有内容(即所有过去的内容)-感谢您提供的解决方案,效果非常好。
getTransitions()
(或者不存在的
GetFutureTransions()
)这是我所见过的最有用的无限
@Thirler的例子。用无限
构建自己的
GetFutureTransfits()
Stream.iterate(rules.nextTransition(Instant.now()),t->rules.nextTransition(t.getInstant())并不难
ZoneRules的状态有两部分-通过
getTransitions()
访问的转换(已知历史)和通过
getTransitionRules()访问的转换规则(不确定未来)
nextTransition(Instant)
方法将两个状态粘在一起。@Thirler您不能拼写;)一般来说,这是不可能做到的,因为未来适用的规则可以由政府改变。他们有时会在短时间内改变。应该有可能获得下一个已知的转换。@Raedwald“一般来说,这是不可能做到的”-实际上可以做到。。。一般来说我猜Raedwald所说的“一般来说,这是不可能的”的意思是,任何这样的列表都只是基于当前定义的规则的预测,但这些规则确实会因政治决定而不时发生变化。无法保证这些时区转换是否真的会发生,或者明天的列表是否相同。请注意,其中包含“如果该时区没有夏令时,或者有关未来更改的信息不确定,则列表将为空”之类的语句。