Java 8 DateTimeFormatter ano de dois dígitos 18 analisado para 0018 em vez de 2018?
No Java 8, o código abaixo analisa "18" no ano "0018" em vez de "2018".
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/y");
return LocalDate.parse(date, formatter);
a data de entrada é "01/05/18".
1) por que o resultado é "0018"? FazDateTimeFormatter
não seguir a regra 80-20?
2)Como controlar a análise de SimpleDateFormat para 19xx ou 20xx? falou sobreSimpleDateFormat.set2DigitYearStart(Date)
pode ser usado para corrigir o ano. Existe algo semelhante a isso paraDateTimeFormatter
?
Eu esperava que "M / d / a" analise os anos de 2 e 4 dígitos.
"M / d / aa" lança a exceção por anos de 4 dígitos e analisa "01/05/97" para "2097-01-05". Idealmente, isso deve ser analisado como "05-01-2007".
"M / d / aaaa" lança exceção por anos de 2 dígitos.