datetimeformatter: DateTimeFormatter cheat sheet module (pattern letters incl. the four hour letters, yyyy vs YYYY week-year bug and WeekFields, en_IN locales and the U+202F AM/PM trap with parseLenient fix, SMART/STRICT/LENIENT parsing, ISO constants, SimpleDateFormat thread safety), 18 contract tests
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b3fvyFpxThdRxcozLx
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
== 31 February under three resolver styles (pattern dd-MM-uuuu) ==
|
||||
STRICT DateTimeParseException: Text '31-02-2026' could not be parsed: Invalid date 'FEBRUARY 31'
|
||||
SMART 2026-02-28
|
||||
LENIENT 2026-03-03
|
||||
|
||||
== 30 February and 32 January ==
|
||||
SMART 30-02-2026 2026-02-28
|
||||
SMART 32-01-2026 DateTimeParseException: Text '32-01-2026' could not be parsed: Invalid value for DayOfMonth (valid values 1 - 28/31): 32
|
||||
|
||||
== STRICT with yyyy: year-of-era needs an era, so it cannot resolve ==
|
||||
yyyy DateTimeParseException: Text '14-11-2026' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {MonthOfYear=11, DayOfMonth=14, YearOfEra=2026},ISO of type java.time.format.Parsed
|
||||
uuuu 2026-11-14
|
||||
|
||||
== how many digits? MM wants two, M accepts one or two ==
|
||||
yyyy-MM-dd 2026-1-5 DateTimeParseException: Text '2026-1-5' could not be parsed at index 5
|
||||
yyyy-M-d 2026-1-5 2026-01-05
|
||||
yyyy-M-d 2026-01-05 2026-01-05
|
||||
|
||||
== two-digit years are read as 2000-2099 ==
|
||||
01-01-30 -> 2030-01-01
|
||||
01-01-99 -> 2099-01-01
|
||||
|
||||
== month names are case-sensitive unless you say otherwise ==
|
||||
14 Nov 2026 2026-11-14
|
||||
14 NOV 2026 DateTimeParseException: Text '14 NOV 2026' could not be parsed at index 3
|
||||
14 NOV 2026 (parseCaseInsensitive) 2026-11-14
|
||||
|
||||
== the old SimpleDateFormat, same 31-02-2026 ==
|
||||
lenient (default): Tue Mar 03 00:00:00 IST 2026
|
||||
setLenient(false): ParseException: Unparseable date: "31-02-2026"
|
||||
Reference in New Issue
Block a user