首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python跨越DST转换返回不正确的结果?

Python跨越DST转换返回不正确的结果?
EN

Stack Overflow用户
提问于 2022-03-10 17:27:54
回答 1查看 109关注 0票数 1

夏令时于2021年3月14日凌晨2点开始。

使用Python创建时区感知的日期时间,如下所示:

代码语言:javascript
复制
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)

我收到输出:

代码语言:javascript
复制
2021-03-13 23:00:00-05:00 2021-03-14 07:00:00-04:00 8.0

Python正确地“看到”了这些值之间的UTC偏移转换(-5 vs -4),但是为什么得到的时间增量等于8而不是7?

就其价值而言,如下所示创建时区感知的日期时间会产生完全相同的结果:

代码语言:javascript
复制
d0 = datetime(2021, 3, 13, 23).replace(tzinfo=tz)
d1 = datetime(2021, 3, 14, 7).replace(tzinfo=tz)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-11 14:06:44

由于对我最初问题的讨论,并根据我从Paul Ganssle的博客文章获得的理解,我将timedelta.total_seconds()的数学替换为:

代码语言:javascript
复制
d1.timestamp() - d0.timestamp()

这给出了我所追求的适当的“实际”时间周期值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71428364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档