ParseException при разборе 3-х символьного сокращенного месяца с использованием SimpleDateFormat
Вот мой код,
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date dft = (Date) format.parse("16-MAY-2018 09:30:22:000");
Я получаю ниже исключения
java.text.ParseException: Неразборчивая дата: "16 мая 2018 09:30:22"
Что нужно использовать для разбора миллисекунд?
5 ответов
Шаблон должен быть MMM, потому что в месяце три символа.
Вы также должны предпочесть java.time
классы к тем, которые вы используете в настоящее время, если вы на Java 8 или выше:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("dd-MMM-yyyy")
.appendLiteral(' ')
.append(ISO_LOCAL_TIME)
.toFormatter();
LocalDateTime timestamp = LocalDateTime.parse("16-May-2018 09:30:22", formatter);
Date dft = (Date) format.parse("16-05-2018 09:30:22");
ИЛИ измените его на
SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
Вы используете дд-мм-гггг чч: мм: сс, так что разбор
16-05-2018 09:30:22
а если хочешь 16 мая 2018 09:30:22 то пользуйся
dd-MMM-yyyy HH:mm:ss
"16-MAY-2018 09:30:22" не разбирается с этим форматом времени. Если вы хотите разобрать, что вы должны изменить формат даты на "дд-ммм-гггг чч: мм: сс". Двойной М только для пронумерованных месяцев (так должно быть 05 для мая).
Проверьте SimpleDateFormat javadoc для более подробной информации: здесь