この問題を回避するには、各フィールドの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で修正される予定のバグであると思われます。
JDK9までこのコードを使用します。 –
問題はフォーマッタの作成を開始することになると予想していました。ニースキャッチ:)私の答えを削除します... –