Skip to content

Missing hour during DST long day when shifting or calculating ranges #1162

@jblackmersolea

Description

@jblackmersolea

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions