2015-11-24 9 views

Antwort

11

Eine Abhilfe ist die Formatierungs selbst DateTimeFormatterBuilder und feste Breite für jedes Feld mit zu bauen. Dieser Code erzeugt das korrekte Ergebnis.

public static void main(String[] args) { 
    DateTimeFormatter formatter = new DateTimeFormatterBuilder() 
             .appendValue(ChronoField.YEAR, 4) 
             .appendValue(ChronoField.MONTH_OF_YEAR, 2) 
             .appendValue(ChronoField.DAY_OF_MONTH, 2) 
             .appendValue(ChronoField.HOUR_OF_DAY, 2) 
             .appendValue(ChronoField.MINUTE_OF_HOUR, 2) 
             .appendValue(ChronoField.SECOND_OF_MINUTE, 2) 
             .appendValue(ChronoField.MILLI_OF_SECOND, 3) 
             .toFormatter(); 

    System.out.println(LocalDateTime.parse("20150901023302166", formatter)); 
} 

So sieht es aus wie es ein Problem mit dem Formatierer ist, wenn es von einem Muster zu bauen. Nach dem Durchsuchen der OpenJDK JIRA scheint dies in der Tat ein Bug, wie in JDK-8031085 verwiesen und geplant in JDK 9 behoben werden.

+0

Vielen Dank für Ihre Hilfe, ich werde den Code nehmen, bis JDK9 –

+1

Wow - ich hätte nie erwartet, dass das Problem darin besteht, den Formatierer zu konstruieren, um damit zu beginnen. Netter Fang :) Entfernt meine Antwort ... –