我正在试图验证我对pythons时间(和夏令时)处理的理解是否正确。我编写了以下代码:
import datetime
import zoneinfo
def test_switchover() -> None:
zone = zoneinfo.ZoneInfo('Europe/Berlin')
expected = datetime.datetime(year=2022, month=10, day=30, hour=2, minute=30, fold=1, tzinfo=zone)
base = datetime.datetime(year=2022, month=10, day=30, hour=2, minute=30, fold=0, tzinfo=zone)
got = base + datetime.timedelta(hours=1)
assert expected == got(请注意,expected有fold=1,它将其标记为2:30的第二次出现)
德国的夏令时将于2022-10-30结束。时钟从中央时间03:00移回中央时间02:00。
我的代码中的所有日期时间对象都是时区感知的。因此,02:30以后的1小时应该是02:30。但是这个断言失败了!
> assert expected == got
E AssertionError: assert datetime.datetime(2022, 10, 30, 2, 30, fold=1, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin')) == datetime.datetime(2022, 10, 30, 3, 30, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin'))
tests/test_python_dst_switchover.py:12: AssertionError为什么?
(python 3.10)
发布于 2022-07-08 18:59:57
我想零钱是在午夜开始的,不是吗?
事实上,在法国,情况会在午夜发生变化,我认为,在大多数欧洲,情况应该是一样的,因此Python可能会认为这是整个欧洲的情况。
https://stackoverflow.com/questions/72915842
复制相似问题