【问题标题】:java.time.format.DateTimeParseException: Text ** could not be parsed at index 20 [duplicate]java.time.format.DateTimeParseException:无法在索引 20 处解析文本 ** [重复]
【发布时间】:2021-06-15 05:14:38
【问题描述】:

下面是我的代码 sn-p,它在我的本地失败,但在其他 DEV 的机器上工作,有人可以指点我缺少什么吗?

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss a z");
ZonedDateTime releaseDate = ZonedDateTime
                .parse("2021-03-31 10:15:30 AM +05:30", formatter);

例外

java.time.format.DateTimeParseException: Text '2021-03-31 10:15:30 AM +05:30' could not be parsed at index 20

    at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
    at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)

【问题讨论】:

  • 为解析器设置语言环境
  • 请注意,您可能不希望 HHa 在一起。
  • (并且包括整个错误消息,而不仅仅是它的摘录。)
  • @OneCricketeer 我不认为这种显式格式应该需要语言环境。
  • @chrylis 所有区域设置都使用 AM/PM 吗?这就是解析器失败的地方

标签: java datetime datetimeformatter


【解决方案1】:

我注意到您的模式存在两个问题:

  • 您包括HH(24 小时制)和a(上午/下午)。你可能想要hh

  • 您使用z(时区名称)但随后显示+05:30。也许你想要ZX

【讨论】:

  • 我试过这种格式,但没有帮助 "yyyy-MM-dd hh:mm:ss a Z" "yyyy-MM-dd hh:mm:ss X"
  • 虽然这两点都表示真正的问题,但它们都不是异常的根源。代码存在(至少)三个问题……
  • @OleV.V.对这里出了什么问题有什么想法吗?
  • 是的,@bharathsanjai,这是一个语言环境问题,就像链接的原始问题一样。你可以在那里找到你的答案。如果您阅读它但不理解它,或者不理解它如何适用于您的情况,请回复,我们将进一步指导您。
猜你喜欢
  • 2020-02-16
  • 2021-09-10
  • 2020-06-25
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
相关资源
最近更新 更多