Java 8 DateTimeFormatter无法解析自身格式化的日期
作者:互联网
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss z");
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(), ZoneId.systemDefault());
// 2016-10-10 09:28:45 PDT
String s = zonedDateTime.format(formatter);
// this call fails
ZonedDateTime.parse(s, formatter);
给定的代码片有什么问题,格式化函数.parse(date.format(formatter))不应该评估到同一个日期吗?
例外:
java.time.DateTimeException: Unable to obtain LocalTime from
TemporalAccessor: {MilliOfSecond=0, MicroOfSecond=0, HourOfAmPm=9,
MinuteOfHour=28, NanoOfSecond=0,
SecondOfMinute=45},ISO,America/Los_Angeles resolved to 2016-10-10 of
type java.time.format.Parsed
解决方法:
由于您已经为12小时时钟指定了hh(小写h),因此您丢失了有关这是否是AM / PM的信息,因此解析正在抱怨.
使用yyyy-MM-dd hh:mm:ss a Z以包含AM / PM指示器.
标签:java,java-8,java-time 来源: https://codeday.me/bug/20190828/1755771.html