2017-12-05 136 views
13

Próbuję przekonwertować ciąg na obiekt LocalDateTime.Dlaczego ta analiza daty kończy się niepowodzeniem?

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

Oczekuję, że ten test przejdzie.

pojawia się następujący błąd:

java.time.format.DateTimeParseException: Text '20171205014657111' could not be parsed at index 0

+0

działa dobrze na moim komputerze: 'dt = 2017-12-05T01: 46: 57.111' – alfasin

+0

@alfasin który JVM wersja biegniesz? – user4184113

+1

Nie działa na moim. Coś dziwnego - spodziewałem się tego. –

Odpowiedz

17

Wygląda jak ja mogę natknąć się ten błąd: https://bugs.openjdk.java.net/browse/JDK-8031085 ponieważ odpowiada wersji JVM używam. Rozwiązaniem w komentarzach rozwiązuje problem dla mnie:

@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); 
} 
+2

Och, wow, to rozczarowuje. Zastanawiam się, dlaczego odkładają go na 9, zamiast naprawiania go w następnej wersji 8. –