2015-11-24 11 views

Odpowiedz

11

Rozwiązaniem jest budowa formatowania samemu korzystając DateTimeFormatterBuilder i stałej szerokości dla każdego pola. Ten kod daje prawidłowy wynik.

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)); 
} 

Wygląda na to, że wystąpił problem z formaterem podczas budowania go ze wzoru. Po przeszukiwaniu JIRA OpenJDK wygląda na to, że jest to błąd, o którym mowa w JDK-8031085 i który ma być naprawiony w JDK 9.

+0

Dzięki za pomoc, wezmę ten kod do JDK9 –

+1

Wow - nigdy bym nie Oczekiwano, że problemem będzie konstruowanie formatyzatora na początek. Fajny połów :) Usunie moją odpowiedź ... –

Powiązane problemy