java - 确定 future 的时区转换

标签 java java-8 java-time

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

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

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

最佳答案

方法 ZoneRules.getTransitions() 不会列出所有的转换,直到无限到 future (显然)。这得到接下来的两个转换:

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]

关于java - 确定 future 的时区转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38736793/

相关文章:

java - 现有抽象类 Clock 上的新接口(interface) java.time.InstantSource 的主要目的是什么?

java - 为什么 PendingIntent 会被触发?

java - java Calendar.toInstant() 和 Instant.atZone(还有 Local/ZonedDateTime.ofInstant())中的不准确性/随机性

java - 保存文件和另存为文件方法

java - 关于增加 JVM 的堆大小

java - 如何确定 java 中枚举的最低/最高索引?

java - 这个Knapsack java代码中如何返回重量和对应的索引?

java - Spark 类型不匹配 : cannot convert from JavaRDD<Object> to JavaRDD<String>

Java 8 流 API - 是否有标准方法将 Map 中的每个值处理为不同类型?

java - 从 LocalDateTime 实例获取 AM/PM 信息