DateTimeParseException: Text could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor

gstackoverflow picture gstackoverflow · May 2, 2017 · Viewed 15.3k times · Source
LocalDateTime.parse("2017-02-02 08:59:12", DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"));

It prints error:

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 message looks like all values parsed correct, but anyway I see error.

How to make it working?

Answer

Robin Topper picture Robin Topper · May 2, 2017

I can only reproduce the exception you get when I try to parse to a LocalDateTime, so I assume that's what you want.

Your mistake is using hh (clock-hour-of-am-pm) instead of HH (hour-of-day). This works:

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

And prints:

2017-02-02T08:59:12