当 tzinfo 为 None 时,Python 日期时间 DST

问题描述 投票:0回答:1

在三月的最后一个周日调用方法

timestamp
返回:

>>> import datetime
>>> before = datetime.fromisoformat("2023-03-26 02:00:01")
>>> after = datetime.fromisoformat("2023-03-26 03:00:01")
>>> print(before.tzinfo)
None
>>> print(after.tzinfo)
None
>>> after.timestamp() - before.timestamp()
0.0

即使相隔一个小时,它们也是相等的。我本以为 tzinfo 为

None

时不会处理夏令时

同时,当使用减法运算符时,它会捕获差异

>>> after - before
datetime.timedelta(seconds=3600)
python datetime dst tzinfo
1个回答
0
投票

https://docs.python.org/3/library/datetime.html#datetime.datetime.timestamp

Naive

datetime
实例假设代表本地时间,此方法依赖于平台 C mktime() 函数来执行转换。

“naive”意味着没有 tzinfo,因此

timestamp
方法隐式地将它们视为当地时间,因此您看到的差异为零。

同时,

after - before
日期数学将它们视为没有时区的抽象日期时间,因此生成的时间增量不考虑 DST。

© www.soinside.com 2019 - 2024. All rights reserved.