【问题标题】:New java time zone info file is not supporting AEST/AEDT新的 java 时区信息文件不支持 AEST/AEDT
【发布时间】:2014-12-10 10:40:54
【问题描述】:

http://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.html

在 Oracle 网站的上述链接中,他们说从 tzdata2014f 版本开始,Java 支持澳大利亚时区的 AEST/AEDT 而不是 EST,但我有当前的 tzdata2014i 版本,但它不只显示 EST。我有什么遗漏或有什么需要做的吗?

这是我使用的小示例程序,

  import java.util.*;

public class TZ {
 public static void main(String[] args) {

 System.out.println(System.getProperty("java.home"));
  for (String id : TimeZone.getAvailableIDs()) {
   if (!id.startsWith("Australia/")) continue;
   TimeZone tz = TimeZone.getTimeZone(id);
   System.out.println(id + ": " + "Daylight: False : " + tz.getDisplayName(false, TimeZone.SHORT) + "/" + " Daylight: True : "+ tz.getDisplayName(true, TimeZone.SHORT));
  }
 }
}

这是我的时区数据文件版本

C:>java -jar tzupdater.jar -V tzupdater 版本 1.4.9-b01 JRE时区数据版本:tzdata2014i 嵌入式时区数据版本:tzdata2014i

提前感谢您的帮助。

问候, 本尼

【问题讨论】:

    标签: java datetime timezone zoneinfo


    【解决方案1】:

    您的问题会自行回答。从 tzdata2014f 及更高版本开始,A 将被包括在内:

    澳大利亚东部时区缩写现在是 AEST/AEDT 而不是 EST,其他澳大利亚时区也是如此。也就是说,对于东部标准时间和夏令时,缩写是 AEST 和 AEDT,而不是两者的前 EST;同样,现在使用 ACST/ACDT、ACWST/ACWDT 和 AWST/AWDT 代替以前的 CST、CWST 和 WST。

    此更改不会影响 UTC 偏移量,只会影响时区缩写。

    您说您使用的是 tzdata2014i,它位于 tzdata2014f 之后。那么你为什么对不再看到EST 感到困惑呢?

    时区名称

    顺便说一句,您不应该使用这些 3-4 个字母的缩写。它们不是真正的时区,不是标准化的,也不是唯一的(如EST 冲突所示)。

    请改用proper IANA time zone names,格式为continent/region。例如,Australia/Sydney

    Instant instant = Instant.now();
    ZoneId zoneId = ZoneId.of( "Australia/Sydney" );
    ZonedDateTime zdt = instant.atZone( zoneId );
    

    instant.toString(): 2016-09-29T22:42:40.063Z

    now.toString(): 2016-09-30T08:42:40.063+10:00[澳大利亚/悉尼]

    仅供参考,维基百科有一个关于 Time in Australia 的页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 2016-10-20
      • 2012-08-18
      • 1970-01-01
      相关资源
      最近更新 更多