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);
给定代码段有什么问题,不应该formatter.parse(date.format(formatter))
评估为同一个date
?
例外:
java.time.DateTimeException:无法从中获取LocalTime TemporalAccessor:{MilliOfSecond = 0,MicroOfSecond = 0,HourOfAmPm = 9, MinuteOfHour = 28,NanoOfSecond = 0, SecondOfMinute = 45},ISO,America / Los_Angeles决定于2016-10-10 输入java.time.format.Parsed
答案 0 :(得分:5)
由于你已经为12小时时钟指定了hh
(小写h),你已经丢失了关于这是否是AM / PM的信息,所以解析就是在抱怨。
使用yyyy-MM-dd hh:mm:ss a Z
包含AM / PM指示符。
答案 1 :(得分:0)
java.time.ZonedDateTime.parse("2016-10-10T09:28:45-07:00");
java.time.LocalDate.parse("2016-10-10");