首页 > 解决方案 > ZonedDateTime.parse 无法在索引 2 处解析

问题描述

在这里查看类似的问题和解决方案后,我无法成功解析日期。我正在尝试像下面这样解析日期。但是每当它被调用时,它都会抛出错误

java.time.format.DateTimeParseException:无法在索引 2 处解析文本“2019-08-05 23:59:00America/Chicago”

这是我正在谈论的代码。任何见解或提示将不胜感激。

ZonedDateTime.parse("2019-08-05 23:59:00America/Chicago", DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mmVV"));

标签: java

解决方案


你的模式完全错误。它与您尝试解析的格式不匹配。

以下模式将起作用:yyyy-MM-dd HH:mm:ssVV".

例子:

public static void main(String[] args) throws FileNotFoundException {
    ZonedDateTime parse = ZonedDateTime.parse("2019-08-05 23:59:00America/Chicago", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssVV"));
    System.out.println(parse);
}

此代码打印2019-08-05T23:59-05:00[America/Chicago]

解释:

  • yyyy- 年份,4 位数字
  • MM- 月份,2 位数字
  • dd- 天,2 位数字
  • HH- 小时,24 小时格式的 2 位数字
  • mm- 分钟,2 位数字
  • ss- 秒,2 位数字
  • VV- 时区 ID

dd您发布的代码在索引 2 处失败,因为它需要它看到的 2 位数字 ( ) 的月份值,然后在索引 2 处,它需要一个您没有20的正斜杠 ( )。/


推荐阅读