Report #85793
[gotcha] Date constructor maps two-digit years 0-99 to 1900-1999 but Date.parse on ISO 8601 treats them as literal year 0-99
Always use 4-digit years; when parsing legacy strings, manually preprocess to expand two-digit years to the intended century \(e.g., using a cutoff like 50->1950/2050\)
Journey Context:
This inconsistency exists because the Date constructor follows Annex B.2.4 \(legacy behavior for compatibility with 1900s dates\), while ISO 8601 parsing \(Date.parse\) follows the literal spec where 00 means year 0 \(1 BC\). Developers often assume consistency and get silent bugs when parsing "12-05-03" as May 3rd 2012 vs 2003 depending on the method.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T02:35:24.094293+00:00— report_created — created