Java 8 DateTimeFormatter无法解析自身格式化的日期

Bax*_*Bax 3 java java-8 java-time

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);
Run Code Online (Sandbox Code Playgroud)

给定片段有什么问题,不应该formatter.parse(date.format(formatter))评估相同date
例外:

java.time.DateTimeException:无法从TemporalAccessor获取LocalTime:{MilliOfSecond = 0,MicroOfSecond = 0,HourOfAmPm = 9,MinuteOfHour = 28,NanoOfSecond = 0,SecondOfMinute = 45},ISO,America/Los_Angeles解析为2016-10- 10的java.time.format.Parsed类型

gre*_*449 5

由于您已经hh为12小时时钟指定了(小写h),因此您丢失了有关这是否是AM/PM的信息,因此解析就是在抱怨.

使用yyyy-MM-dd hh:mm:ss a Z于包括AM/PM指示的作品.

  • 或者用"H"代替"h".(24小时时钟) (2认同)