arrow-py / arrow

🏹 Better dates & times for Python
https://arrow.readthedocs.io
Apache License 2.0
8.73k stars 684 forks source link

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

Open jblackmersolea opened 1 year ago

jblackmersolea commented 1 year ago

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

ArcXeon commented 1 year ago

Can I take this issue?

SarthakNikhal commented 1 year ago

Can I work on this issue? @jblackmersolea

jblackmersolea commented 1 year ago

Anyone can work on this issue as far as I know.