gpt4 book ai didi

python - python中时区切换时不一致

转载 作者:行者123 更新时间:2023-12-01 06:15:25 25 4
gpt4 key购买 nike

我创建了一个日期时间对象,如下所示:

tm = datetime.datetime.strptime('2010 Aug 04 14:15:16', '%Y %b %d %H:%M:%S')
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16)

然后我像这样设置时区:

tm.replace(tzinfo=pytz.timezone('UTC'))
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16, tzinfo=<UTC>)

最终,我将时区更改为美国/太平洋地区,如下所示:

>>> tm = tm.astimezone(pytz.timezone('US/Pacific'))
>>> tm
datetime.datetime(2010, 8, 4, 7, 15, 16, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)

这是正确的。但如果我要进入另一个方向:

>>> tm = tm.replace(tzinfo =pytz.timezone('US/Pacific'))
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)

如您所见,使用带有 PST 时区的 Replace() 会错误地假定它不是夏令时。因此,当我转换为 UTC 时,它会增加 8 小时而不是 7 小时。

为什么要这样做以及如何更改它以便它执行我想要的操作(是否正确实现 DST)?

最佳答案

是的,这就是为什么当您有 datetime with 时,您使用 .astimezone 而不是 .replace一个时区。使用 .astimezone 使时区有机会根据夏令时等进行调整。 使用.replace为简单的datetime提供tzinfo对象。

关于python - python中时区切换时不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3551085/

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