【问题标题】:DateTimeParseException: Text could not be parsed: Unable to obtain LocalDateTime from TemporalAccessorDateTimeParseException:无法解析文本:无法从 TemporalAccessor 获取 LocalDateTime
【发布时间】:2017-09-29 16:10:38
【问题描述】:
LocalDateTime.parse("2017-02-02 08:59:12", DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"));

打印错误:

java.time.format.DateTimeParseException: Text '2017-02-02 08:59:12' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: {MinuteOfHour=59, NanoOfSecond=0, SecondOfMinute=12, MicroOfSecond=0, MilliOfSecond=0, HourOfAmPm=8},ISO resolved to 2017-02-02 of type java.time.format.Parsed

Accoeding 消息看起来所有值都解析正确,但无论如何我看到了错误。

如何让它工作?

【问题讨论】:

  • LocalDateLocalDateTime?您在格式化程序中指明小时等
  • 我工作得很好!
  • 异常表示你尝试解析为LocalDateTime。您在问题中的代码有效
  • 抱歉,各位,已更正
  • 错误消息中要注意的详细信息是HourOfAmPm=8。它没有说一天中的小时......

标签: java datetime datetime-format localdate


【解决方案1】:

我只能重现您在尝试解析为 LocalDateTime 时遇到的异常,所以我认为这就是您想要的。

您的错误是使用 hh (clock-hour-of-am-pm) 而不是 HH (hour-of-day)。这有效:

LocalDateTime ldt = LocalDateTime.parse("2017-02-02 08:59:12", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(ldt);

然后打印:

2017-02-02T08:59:12

【讨论】:

  • 谢谢,我的错误在于年份模式,我使用基于周的年份 YYYY 而不是 yyyy
猜你喜欢
  • 2017-02-20
  • 1970-01-01
  • 2019-12-04
  • 2016-06-26
  • 2017-03-09
  • 1970-01-01
  • 2016-05-19
  • 2019-04-16
  • 2022-07-01
相关资源
最近更新 更多