DateTimeFormmater doesn\'t seem to handle single digit day of the month:
String format = \"MM/dd/yyyy\";
String date = \"5/3/1969\";
System.ou
In Java 8 Date Time API, I recently used
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendOptional(DateTimeFormatter.ofPattern("M/dd/yyyy"))
.appendOptional(DateTimeFormatter.ofPattern(("MM/dd/yyyy")))
.toFormatter();
System.out.println(LocalDate.parse("10/22/2020", formatter));
System.out.println(LocalDate.parse("2/21/2020", formatter));
From the documentation:
Number: If the count of letters is one, then the value is output using the minimum number of digits and without padding.
So the format specifier you want is M/d/yyyy, using single letter forms. Of course, it will still parse date Strings like "12/30/1969" correctly as for these day/month values, two digits are the “minimum number of digits”.
The important difference is that MM and dd require zero padding, not that M and d can’t handle values greater than 9 (that would be a bit… unusual).