新的 Java 时区信息文件不支持 AEST/AEDT



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

在甲骨文网站的上述链接中,他们说从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 -VTzupdater 版本 1.4.9-B01JRE 时区数据版本: tzdata2014i嵌入式时区数据版本:tzdata2014i

提前感谢任何帮助。

问候班尼

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

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

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

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

时区名称

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

请改用正确的 IANA 时区名称,格式为 continent/region 。例如,Australia/Sydney .

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

即时字符串((: 2016-09-29T22:42:40.063Z

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

仅供参考,维基百科有一个关于澳大利亚时间的页面。

相关内容

  • 没有找到相关文章

最新更新