您期望的价值是什么
一个月一个月-一个月一个月
阿姆斯特丹自2023年3月26日起开始实行夏令时,因此3月25日为UTC+1,3月26日为UTC+2,直观上为23 hours
或25 hours
,但由于夏令时的变化而不是24 hours
。
但下面的计算显示为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)
我尝试使用pytz
或pendulum
,结果是一样的,24小时。
我将这两个时间点转换为UTC,或者只使用UNIX时间戳,我得到了23个小时,正如我所期望的。
(p2.astimezone(pendulum.timezone('UTC')) - p1.astimezone(pendulum.timezone('UTC'))).total_seconds()/3600
或者
(p2.timestamp() - p1.timestamp())/3600
1条答案
按热度按时间ekqde3dh1#
指定
tzinfo
并不能为具有夏令时转换的时区正确创建时区感知datetime对象请参阅文档。打印p1
和p2
的repr
显示p1
和p2
具有相同的时区:您需要通过
timezone.localize
传递不识别时区的datetime对象。或者,创建
pendulum.datetime
对象: