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

标签 java parsing timezone timestamp datetime-format

我正在尝试解析美国/阿留申时间戳。这在过去有效,但我无法找出为什么它不再有效。我正在运行 Java 1.8 更新 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();
    }

... Date 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。

感谢大家的投入!

关于Java 1.8 拒绝解析带有美国/阿留申 (HAST) 时区的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35257836/

相关文章:

java - 将 getDeclaredConstructor() 与 Class 参数一起使用

ios - Swift中JSON解析返回数据

python - 如何正确地将 PyTZ 添加到 Google App Engine 应用程序?

bash - 使用 bash、sed、awk 解析 .ini 等文件

java - ANTLR4 在导入时找不到语法

mysql - 时区或时间冲突

linq-to-sql - 如何存储和比较时区敏感时间

java - 如何使用 HttpsUrlConnection 通过 SSL 连接使用代理身份验证?

javascript - 在java spring boot中如何使用thymeleaf将表单操作作为函数传递,如何将表单操作解析为函数

java - 更改 symmetry.key.master.password 在 6.0 中不起作用