Я только что столкнулся с этим удивительным поведением с датами Python при создании даты и времени в зависимости от смены летнего времени.
Добавление дельты времени к локальной дате и времени может не добавить ожидаемого количества времени.
Очевидно, что при добавлении дельты времени (например, 3 часов) к локальной дате и времени она добавляется независимо от часового пояса, и разница между двумя датами и временем (в режиме реального времени/UTC) не гарантированно будет этой дельтой времени (т. е. она может составлять 2 часа из-за летнего времени). Это своего рода ловушка.
Каково обоснование? Это где-то задокументировано?
Я только что столкнулся с этим удивительным поведением с датами Python при создании даты и времени в зависимости от смены летнего времени. Добавление дельты времени к локальной дате и времени может не добавить ожидаемого количества времени. [code]import datetime as dt from zoneinfo import ZoneInfo
# Compute timedeltas d2 - d1 # datetime.timedelta(seconds=3600) d2u - d1u # datetime.timedelta(0) [/code] Я согласен, что d1 и d2 одинаковы, но разве d2 не должно быть «2020-03-29T04:00:00+02:00», тогда? [code]d3 = d0 + dt.timedelta(hours=4) # datetime.datetime(2020, 3, 29, 4, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Paris')) [/code] Очевидно, что при добавлении дельты времени (например, 3 часов) к локальной дате и времени она добавляется независимо от часового пояса, и разница между двумя датами и временем (в режиме реального времени/UTC) не гарантированно будет этой дельтой времени (т. е. она может составлять 2 часа из-за летнего времени). Это своего рода ловушка. Каково обоснование? Это где-то задокументировано?