DateTimeFormatter formatter2 = new DateTimeFormatterBuilder()
.appendPattern("h:mm a z - d MMMM")
.toFormatter()
.withLocale(Locale.US);
String test = "7:00 PM EST - 14 April";
LocalDateTime date2 = LocalDateTime.parse(test, formatter2);
Выдает это исключение
java.time.format.DateTimeParseException: текст «19:00 EST — 14 апреля» не может быть проанализирован: невозможно получить LocalDateTime из TemporalAccessor: {DayOfMonth=14, MonthOfYear=4},ISO,Америка/Нью-Йорк разрешено до 19:00 типа java.time.format.Parsed
Но вы можете видеть, что он правильно разобрал все компоненты. В чем проблема?
@aled ой! Могу ли я установить год по умолчанию?
Отредактируйте заголовок и текст вопроса, чтобы было ясно, что вы спрашиваете, как установить год по умолчанию в форматере.
Проблема в том, что для создания LocalDateTime
требуется наличие года, а для строки времени — нет.
Вы можете указать DateTimeFormatterBuilder
по умолчанию какое-то значение, если какой-то элемент отсутствует, используя parseDefaulting
.
DateTimeFormatter formatter2 = new DateTimeFormatterBuilder()
.parseDefaulting(ChronoField.YEAR, 2023)
.appendPattern("h:mm a z - d MMMM")
.toFormatter()
.withLocale(Locale.US);
Извините моя ошибка. Должно быть ChronoField
.
Какой год?