ParseException при разборе 3-х символьного сокращенного месяца с использованием SimpleDateFormat - PullRequest
0 голосов
/ 03 мая 2018

Вот мой код,

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 ]

0 голосов
/ 03 мая 2018

Шаблон должен быть МММ, потому что в месяце три символа.

Вы также должны предпочесть классы 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);
0 голосов
/ 03 мая 2018

вы используете дд-мм-гггг ЧЧ: мм: сс, так что разбор равен

16-05-2018 09:30:22

и если вы хотите 16 мая 2018 09:30:22, тогда используйте

dd-MMM-yyyy HH:mm:ss
0 голосов
/ 03 мая 2018

"16-MAY-2018 09:30:22" не может быть проанализировано с этим форматом времени. Если вы хотите разобрать, что вы должны изменить формат даты на "дд-ммм-гггг чч: мм: сс". Двойной М только для пронумерованных месяцев (так должно быть 05 для мая).

Проверьте Javadoc SimpleDateFormat для более подробной информации: здесь

0 голосов
/ 03 мая 2018
Date dft  = (Date) format.parse("16-05-2018 09:30:22");

ИЛИ измените его на

SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
0 голосов
/ 03 мая 2018

Используйте этот шаблон: дд- ммм -гггг ЧЧ: мм: сс

...