Подтвердить что ты не робот

Почему этот синтаксический анализ даты не работает?

Я пытаюсь преобразовать строку в объект LocalDateTime.

@Test
public void testDateFormat() {
   String date = "20171205014657111";
   DateTimeFormatter formatter = 
       DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
   LocalDateTime dt = LocalDateTime.parse(date, formatter);
}

Я бы ожидал, что этот тест пройдет.

Я получаю следующую ошибку:

java.time.format.DateTimeParseException: текст '20171205014657111' не может быть проанализирован с индексом 0

4b9b3361

Ответ 1

Похоже, что я столкнулся с этой ошибкой: https://bugs.openjdk.java.net/browse/JDK-8031085, так как это соответствует используемой JVM-версии. Обходной путь в комментариях исправляет проблему для меня:

@Test
public void testDateFormat() {
    String date = "20171205014657111";
    DateTimeFormatter dtf = new DateTimeFormatterBuilder()
       .appendPattern("yyyyMMddHHmmss")
       .appendValue(ChronoField.MILLI_OF_SECOND, 3).toFormatter();
    LocalDateTime dt = LocalDateTime.parse(date, dtf);
}