I recently changed... continents and temporarily forgot to signify July 27th 2023 in the European way, i.e "27/07/2023", and instead maintained the American - style literal "07/27/2023", which I promptly passed as argument to the parse method of a SimpleDateFormat instance initialized with the European pattern "dd/MM/yyyy". I would have expected a ParseException to arise since there are only 12 months in the year, but the following runs fine:
System.out.println(new SimpleDateFormat("dd/MM/yyyy").parse("07/27/2023"));
and outputs
Fri Mar 07 00:00:00 EET 2025
I'm running corretto-17.0.2 JDK.
I understand why this happens mathematically (27 = 2 * 12 + 3 and it's March of 2023 + 2 = 2025, yay!) and I also understand that SimpleDateFormat has problems of its own, e.g thread (un)safety, but I was wondering whether this is something that could be reported as a bug, or whether there is some logic behind it that I don't understand. The official Oracle docs DON'T stipulate SimpleDateFormat::parse() as deprecated or considered for removal. Appreciate any input.