Una soluzione è quella di costruire il formattatore da soli, usando DateTimeFormatterBuilder
e larghezza fissa per ogni campo. Questo codice produce il risultato corretto.
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));
}
Quindi sembra che ci sia un problema con il formattatore quando lo si costruisce da un modello. Dopo aver cercato OpenJDK JIRA, sembra che si tratti effettivamente di un bug, come indicato in JDK-8031085 e programmato per essere risolto in JDK 9.
Grazie per il tuo aiuto, prenderò quel codice fino a JDK9 –
Wow - Non avrei mai si aspettava che il problema fosse nella costruzione del formattatore per iniziare. Bella cattura :) Rimuoverò la mia risposta ... –