【发布时间】:2023-02-17 00:20:57
【问题描述】:
我想计算夏令时发生时的时差。
今年,夏令时将在欧洲/阿姆斯特丹时区的 3 月 26 日之后开始。
所以我预计 2023 年 3 月 26 日 8 点到 2023 年 3 月 25 日 8 点之间的时间差不是 24 小时。
但下面的计算显示 24 小时。
这是为什么?
我的python版本是3.9.6
from datetime import datetime, timedelta
import pendulum
p1 = datetime(year=2023, month=3, day=25, hour=8, minute=0, tzinfo=pendulum.timezone('Europe/Amsterdam')) # No DST
p2 = datetime(year=2023, month=3, day=26, hour=8, minute=0, tzinfo=pendulum.timezone('Europe/Amsterdam')) # DST
print((p2 - p1).total_seconds()/3600)
预计为 23 小时,但显示为 24 小时。
我尝试使用pytz或pendulum,结果是一样的。
我将这两个时间点转换为 UTC,或者只使用 unix 时间戳,正如我预期的那样,我得到了 23 小时。
(p2.astimezone(pendulum.timezone('UTC')) - p1.astimezone(pendulum.timezone('UTC'))).total_seconds()/3600
(p2.timestamp() - p1.timestamp())/3600
【问题讨论】: