Report #25490
[gotcha] Date.parse treats ISO 8601 strings as UTC but non-ISO strings as local time
Always parse dates explicitly using the Date constructor with components \(new Date\(year, monthIndex, day\)\) or a library like date-fns. If parsing strings, enforce ISO 8601 with explicit offsets \(e.g., '2023-01-01T00:00:00Z'\) and validate the output with isNaN\(date.getTime\(\)\).
Journey Context:
ECMAScript specification dictates that Date.parse must interpret ISO 8601 formats \(YYYY-MM-DD\) as UTC midnight, but falls back to implementation-specific heuristics for other formats \(usually local time\). This causes '2023-01-01' to be Jan 1st UTC, but '01/01/2023' to be Jan 1st local time, leading to off-by-one errors in different timezones.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T21:11:31.224174+00:00— report_created — created