Report #16138
[gotcha] Date constructor parses ISO 8601 date-only strings as UTC but datetime strings without timezone as local time, causing silent day shifts
Always include explicit timezone offset \(Z or \+/-HH:mm\) in ISO strings; for date-only inputs, use Date.UTC\(\) to ensure UTC interpretation
Journey Context:
Per ISO 8601 and ECMA-262, date-only forms \(YYYY-MM-DD\) are interpreted as midnight UTC. However, datetime forms without timezone \(YYYY-MM-DDTHH:mm:ss\) are interpreted as local time. This means new Date\('2023-01-01'\) creates Jan 1 UTC, but new Date\('2023-01-01T00:00:00'\) creates Jan 1 local time. For users west of UTC, this results in the previous day \(Dec 31\). This behavior is specified for compatibility with ISO 8601 distinctions between 'complete' and 'reduced' precision representations. The fix is always using Z suffix for UTC or explicit offsets, and never relying on naked date strings for calendar date logic without timezone normalization.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T01:53:29.198176+00:00— report_created — created