DateTimeParseException:无法解析文本:无法从 TemporalAccessor 获取 LocalDateTime

Posted

技术标签:

【中文标题】DateTimeParseException:无法解析文本:无法从 TemporalAccessor 获取 LocalDateTime【英文标题】:DateTimeParseException: Text could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor 【发布时间】: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。它没有说一天中的小时...... 【参考方案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

以上是关于DateTimeParseException:无法解析文本:无法从 TemporalAccessor 获取 LocalDateTime的主要内容,如果未能解决你的问题,请参考以下文章

字符串到 LocalDateTime 的转换:java.time.format.DateTimeParseException [重复]

DateTimeParseException could not be parsed at index 0

DateTimeParseException could not be parsed at index 0

fastjson反序列化LocalDateTime失败的问题java.time.format.DateTimeParseException: Text '2019-05-24 13:52:11

fastjson反序列化LocalDateTime失败的问题java.time.format.DateTimeParseException: Text '2019-05-24 13:52:11

fastjson反序列化LocalDateTime失败的问题java.time.format.DateTimeParseException: Text '2019-05-24 13:52:11