#1162·arrow

Missing hour during DST long day when shifting or calculating ranges

Author: jblackmersoleaCreated Sep 11, 2023Updated May 25, 2026
Labelsbug

Issue Description

When iterating or shifting over times that cross the DST long day change, an hour is skipped when the time zone is set for something other than UTC.

The following demonstrates the issue where the first loop prints 2 hours for the span, but converting those same timestamps to UTC prints 3 hours (correctly). It's also strange that the tzinfo has to be set for the ISO timestamp containing the offset hours.

dts = arrow.get("2021-11-07T01:00:00-05:00", tzinfo="US/Central")
dte = arrow.get("2021-11-07T02:00:00-06:00", tzinfo="US/Central")
for dt in Arrow.range("hours", dts, dte):
    print(dt)
print("---BREAK---")
dts = arrow.get("2021-11-07T01:00:00-05:00", tzinfo="US/Central").to("UTC")
dte = arrow.get("2021-11-07T02:00:00-06:00", tzinfo="US/Central").to("UTC")
for dt in Arrow.range("hours", dts, dte):
    print(dt)

System Info

  • Ubuntu 22.04.3 LTS
  • Python 3.10.12
  • Arrow 1.2.3