夏令时于2021年3月14日凌晨2点开始。
使用Python创建时区感知的日期时间,如下所示:
import zoneinfo
from datetime import datetime
tz = zoneinfo.ZoneInfo("US/Eastern")
d0 = datetime(2021, 3, 13, 23, tzinfo=tz)
d1 = datetime(2021, 3, 14, 7, tzinfo=tz)
print(d0, d1, (d1 - d0).total_seconds() / 60 / 60)我收到输出:
2021-03-13 23:00:00-05:00 2021-03-14 07:00:00-04:00 8.0Python正确地“看到”了这些值之间的UTC偏移转换(-5 vs -4),但是为什么得到的时间增量等于8而不是7?
就其价值而言,如下所示创建时区感知的日期时间会产生完全相同的结果:
d0 = datetime(2021, 3, 13, 23).replace(tzinfo=tz)
d1 = datetime(2021, 3, 14, 7).replace(tzinfo=tz)发布于 2022-03-11 14:06:44
由于对我最初问题的讨论,并根据我从Paul Ganssle的博客文章获得的理解,我将timedelta.total_seconds()的数学替换为:
d1.timestamp() - d0.timestamp()这给出了我所追求的适当的“实际”时间周期值。
https://stackoverflow.com/questions/71428364
复制相似问题