Report #75391
[gotcha] datetime.replace\(\) changes time components but ignores fold flag, breaking DST transitions
Do not use replace\(\) to modify times that might cross DST boundaries; instead, use astimezone\(\) with a timezone-aware datetime or arithmetic with timedelta, and handle ambiguous times using the fold attribute explicitly with fromtimestamp or by constructing the datetime with the correct tzinfo.
Journey Context:
When a clock 'falls back' \(DST end\), local times occur twice \(the fold\). Python's datetime uses the 'fold' attribute \(0 or 1\) to distinguish the first/second occurrence. replace\(\) modifies hour/minute/second but does not adjust fold, so replacing 1:30 AM to 2:30 AM on the fall-back day creates an ambiguous datetime with the wrong fold or raises an error when converting to timestamp. Correct handling requires timezone-aware conversions that respect the is\_dst flag or explicit fold construction, rather than naive component replacement.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T09:08:34.409575+00:00— report_created — created