gpt4 book ai didi

python - 如何在 Python 中计算具有不同时区的日期时间之间的时间增量

转载 作者:太空宇宙 更新时间:2023-11-04 05:14:41 24 4
gpt4 key购买 nike

在 Python 中将日期时间与不同的时区区分开来时,如何获得有效的 timedelta 实例?我发现如果时区不同,timedelta 始终为 0。

>>> from dateutil.parser import parse 
>>> dt0=parse('2017-02-06 18:14:32-05:00')
>>> dt0
datetime.datetime(2017, 2, 6, 18, 14, 32, tzinfo=tzoffset(None, -18000))
>>> dt1=parse('2017-02-06 23:14:32+00:00')
>>> dt1
datetime.datetime(2017, 2, 6, 23, 02, 12, tzinfo=tzutc())
>>> (dt1-dt0).total_seconds()
0.0

这对我来说没有任何意义。我原以为 Python 的 datetime 类会足够聪明,可以在内部将这两个值规范化为 UTC,然后返回基于这些值的 timedelta。或者抛出异常。相反,它返回 0,暗示两个日期时间相等,但显然它们不相等。我在这里做错了什么?

最佳答案

您对时区的含义感到困惑;你给的两次是相同的,所以他们的差异当然是零。我可以复制你的结果,除了我没有第二个字符串和第二个 datetime 之间的差异,你有:

>>> from dateutil.parser import parse
>>> dt0=parse('2017-02-06 18:14:32-05:00')
>>> dt0
datetime.datetime(2017, 2, 6, 18, 14, 32, tzinfo=tzoffset(None, -18000))
>>> dt1=parse('2017-02-06 23:14:32+00:00')
>>> dt1
datetime.datetime(2017, 2, 6, 23, 14, 32, tzinfo=tzutc())
>>> (dt1-dt0).total_seconds()
0.0

但是请注意,当我将 dt0 转换为 UTC 时会发生什么。时间根据时差 5 小时进行调整,与秒相同。

>>> dt0.astimezone(dt1.tzinfo)
datetime.datetime(2017, 2, 6, 23, 14, 32, tzinfo=tzutc())

关于python - 如何在 Python 中计算具有不同时区的日期时间之间的时间增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42078348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com