【问题标题】:How to parse date string '2021-08-03T10:00:00EDT' to ZonedDateTime in java?java - 如何在java中将日期字符串'2021-08-03T10:00:00EDT'解析为ZonedDateTime?
【发布时间】:2022-01-03 17:03:52
【问题描述】:

尝试使用以下模式时出现以下错误

private static final DateTimeFormatter DATE_TIME_FORMATTER
        = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssz");

有人能解释一下这背后的原因吗?

收到上述模式的错误: java.time.format.DateTimeParseException:无法在索引 19 处解析文本“2021-08-03T10:00:00EDT”

【问题讨论】:

  • 您使用的是哪个 Java 版本?另外,你现在的Locale是什么?
  • 在我的计算机上,这适用于“en_US”和“hi_IN”的区域设置。 19 把你放在'E'。想知道您的 Java 安装是否不知道 EDT,即东部夏令时间。
  • 此代码 sn-p 可能会有所帮助。它没有专门打印“EDT”,但确实打印了变体。 for (String t : TimeZone.getAvailableIDs()) {System.out.println(t);}
  • 一个minimal reproducible example,好吗?还问,因为我也无法复制。我正在解析你的字符串,没有任何问题的迹象。

标签: java string date zoneddatetime datetimeformatter


【解决方案1】:

可以通过以下方式解析

String val="2021-08-03T10:00:00EDT";
DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssz");
ZonedDateTime zonedDateTime=ZonedDateTime.parse(val,DATE_TIME_FORMATTER);
System.out.println(zonedDateTime);

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 2012-07-11
    • 2013-06-05
    • 2012-10-21
    相关资源
    最近更新 更多