2015-11-24 5 views

答えて

11

この問題を回避するには、各フィールドのDateTimeFormatterBuilderと固定幅を使用してフォーマッタを自分で構築することです。このコードは正しい結果を生成します。

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

パターンからビルドするときにフォーマッタに問題があるようです。 OpenJDK JIRAを検索した後、これは実際にはJDK-8031085で参照され、JDK 9で修正される予定のバグであると思われます。

+0

JDK9までこのコードを使用します。 –

+1

問題はフォーマッタの作成を開始することになると予想していました。ニースキャッチ:)私の答えを削除します... –

関連する問題