Report #40944
[gotcha] Temporal PlainDate arithmetic loses civil time when converting to ZonedDateTime across DST
Use ZonedDateTime for all arithmetic that might cross DST boundaries, or convert to ZonedDateTime before adding duration to preserve time-of-day intent.
Journey Context:
PlainDate lacks time and timezone context. Adding days to a PlainDate then converting to ZonedDateTime assumes midnight, but DST transitions can shift that instant to 23:00 or 01:00 on a different day. Conversely, adding days to a ZonedDateTime adjusts the UTC instant to keep the civil time stable \(e.g., 02:30 stays 02:30 even if the offset changes\). Developers often use PlainDate for 'simple' calendar math and silently corrupt timestamps.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T23:11:45.321730+00:00— report_created — created