#java #java-8 #java-time
#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);
Что не так с данным фрагментом, не 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
Комментарии:
1. Пожалуйста, отправьте исключение и значение строки s, чтобы оно было полным.
Ответ №1:
Поскольку вы указали hh
(нижний регистр h) для 12-часовых часов, вы потеряли информацию о том, является ли это AM / PM, поэтому синтаксический анализ жалуется на это.
Использование yyyy-MM-dd hh:mm:ss a Z
для включения индикатора AM / PM работает.
Комментарии:
1. Или замените «h» на «H». (24-часовые часы)
Ответ №2:
java.time.ZonedDateTime.parse("2016-10-10T09:28:45-07:00");
java.time.LocalDate.parse("2016-10-10");