2017-12-05 12 views
13

Ich versuche, eine Zeichenfolge in ein LocalDateTime-Objekt zu konvertieren.Warum schlägt diese Datumsanalyse fehl?

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

Ich würde erwarten, dass dieser Test bestanden wird.

bekomme ich folgende Fehlermeldung:

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

+0

funktioniert auf meinem Rechner: 'dt = 2017-12-05T01: 46: 57.111' – alfasin

+0

@alfasin die Jvm Version sind Sie? – user4184113

+1

Funktioniert nicht auf meiner. Irgendwie komisch - ich habe es erwartet. –

Antwort

17

Sieht aus wie ich über diesen Fehler ausgeführt haben kann: https://bugs.openjdk.java.net/browse/JDK-8031085 wie es die JVM-Version entspricht ich verwende. Die Problemumgehung in den Kommentaren behebt das Problem für mich:

@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

Oh, wow, das ist enttäuschend. Ich frage mich, warum sie es auf 9 verschieben, anstatt es im nächsten Build von 8 zu reparieren. –

Verwandte Themen