编程语言
首页 > 编程语言> > Java 1.8拒绝使用美国/阿留申(HAST)时区解析日期?

Java 1.8拒绝使用美国/阿留申(HAST)时区解析日期?

作者:互联网

我正在尝试解析美国/阿留申群岛的时间戳.过去这种做法行之有效,但我不知道为什么它不再有效.我正在运行Java 1.8 update 72.

代码如下:

    try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz");
        sdf.setTimeZone(TimeZone.getTimeZone("US/Aleutian"));

        // the following line throws an parsing exception
        Date d = sdf.parse("1969-12-31T13:00:00HAST");
        System.out.println(sdf.format(d));

    } catch (Exception e) {
        e.printStackTrace();
    }

…日期d = sdf.parse(“ 1969-12-31T13:00:00HAST”);行引发异常,但我无法找出问题所在:

java.text.ParseException: Unparseable date: "1969-12-31T13:00:00HAST"
    at java.text.DateFormat.parse(Unknown Source)

我确信这在过去是可行的.我研究了HAST时区,它是有效的.我不确定为什么这对我不起作用.

谁能知道发生了什么事?如果这对您有用,请您列出您的Java版本,以便我们确定是否/何时损坏了它?

谢谢!

解决方法:

找到了答案.

根据this,在Java 6更新101中删除了该缩写:

“根据美国政府印刷局的样式,夏威夷-阿留申语标准和夏令时的缩写已从HAST / HADT更改为HST / HDT.自1983年以来,仅影响America / Adak,因为America / Honolulu已在使用新样式”.

因此,我将继续使用HST.

感谢大家的意见和建议!

标签:timezone,datetime-format,timestamp,java,parsing
来源: https://codeday.me/bug/20191119/2033255.html