gpt4 book ai didi

.localize 和 tzinfo 之间的 Python 日期时间差异

转载 作者:太空狗 更新时间:2023-10-30 01:12:53 25 4
gpt4 key购买 nike

为什么这两条线会产生不同的结果?

>>> import pytz
>>> from datetime import datetime

>>> local_tz = pytz.timezone("America/Los_Angeles")

>>> d1 = local_tz.localize(datetime(2015, 8, 1, 0, 0, 0, 0)) # line 1
>>> d2 = datetime(2015, 8, 1, 0, 0, 0, 0, local_tz) # line 2
>>> d1 == d2
False

造成差异的原因是什么,我应该使用哪个来本地化日期时间?

最佳答案

当您创建 d2 = datetime(2015, 8, 1, 0, 0, 0, 0, local_tz) 时,它无法正确处理夏令时 (DST)。 local_tz.localize() 可以。

d1

>>> local_tz.localize(datetime(2015, 8, 1, 0, 0, 0, 0))
datetime.datetime(
2015, 8, 1, 0, 0,
tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>
)

d2

>>> datetime(2015, 8, 1, 0, 0, 0, 0, local_tz)
datetime.datetime(
2015, 8, 1, 0, 0,
tzinfo=<DstTzInfo 'America/Los_Angeles' LMT-1 day, 16:07:00 STD>
)

你可以看到它们代表的不是同一时间。

如果您要使用 UTC,

d2 方式很好。 UTC 没有要处理的夏令时 (DST) 转换。

处理时区的正确方法是使用 local_tz.localize() 来支持夏令时 (DST)

可以在此处找到更多信息和其他示例:
http://pytz.sourceforge.net/#localized-times-and-date-arithmetic

关于.localize 和 tzinfo 之间的 Python 日期时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39460236/

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