DateTimeFormmater
ne semble pas gérer le jour à un chiffre du mois:
String format = "MM/dd/yyyy";
String date = "5/3/1969";
System.out.println(new SimpleDateFormat(format).parse(date));
System.out.println(LocalDate.parse(date, DateTimeFormatter.ofPattern(format)));
Dans cet exemple, SimpleDateFormat
analyse correctement la date, mais DateTimeFormatter
lève une exception. Si je devais utiliser des dates nulles, par exemple, "05/03/1969", les deux fonctionnent. Cependant, si le jour du mois ou le mois de l'année sont à un seul chiffre, DateTimeFormatter
lève une exception.
Quel est le bon format DateTimeFormatter
pour analyser le jour du mois et le mois de l'année à un et deux chiffres?
De la documentation :
Nombre : si le nombre de lettres est égal à un, la valeur est émise en utilisant le nombre minimum de chiffres et sans remplissage.
Le spécificateur de format souhaité est donc M/d/yyyy
, en utilisant des lettres simples. Bien sûr, il analysera toujours la date String
s comme "12/30/1969"
correctement comme pour ces valeurs jour/mois, deux chiffres sont le "nombre minimum de chiffres".
La différence importante est que MM
et dd
ne nécessitent aucun remplissage, pas que M
et d
ne peut pas gérer des valeurs supérieures à 9 (ce serait un peu ... inhabituel).