gpt4 book ai didi

Python:关于美国/太平洋和美国/洛杉矶时区的 datetime.astimezone 的奇怪行为?

转载 作者:太空狗 更新时间:2023-10-30 03:05:56 29 4
gpt4 key购买 nike

请注意:

C:\dev\poc\SDR>python
Python 2.7.1 (r271:86832, Nov 27 2010, 17:19:03) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pytz import timezone
>>> from datetime import datetime
>>> tz1=timezone('America/Los_Angeles')
>>> tz2=timezone('US/Pacific')
>>> ts1=datetime(2011,8,1,tzinfo=tz1)
>>> ts2=datetime(2011,8,1,tzinfo=tz2)
>>> ts1
datetime.datetime(2011, 8, 1, 0, 0, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)
>>> ts2
datetime.datetime(2011, 8, 1, 0, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)
>>> ts1.astimezone(tz1)
datetime.datetime(2011, 8, 1, 0, 0, tzinfo=<DstTzInfo 'America/Los_Angeles' PST-1 day, 16:00:00 STD>)
>>> ts2.astimezone(tz2)
datetime.datetime(2011, 8, 1, 0, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)
>>> ts1.astimezone(tz2)
datetime.datetime(2011, 8, 1, 1, 0, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)
>>> ts2.astimezone(tz1)
datetime.datetime(2011, 8, 1, 1, 0, tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>)
>>>

这是我不明白的地方。 US/Pacific (tz1) 和 America/Los_Angeles (tz2) 应该表示相同的时区,不是吗?那么 datetime.astimezone 调用从一个区域移动到另一个区域怎么会改变小时呢?

谢谢。

最佳答案

夏令时。请注意,最后两个条目列出了 PDT-1

astimezone 会考虑夏令时,但前提是它确实经过了它的完整逻辑。

您的示例中的前两个 astimezone 调用通过完整的逻辑,因为它们短路(因为它们正在转换“到”的时区已经匹配他们正在“从”转换的那个)。

(您可能想知道为什么初始日期时间尚未使用 PDT。这是因为 datetime 构造函数 doesn't take into account daylight savings time ,即使您将时区传递给它 - 它也只是盲目地设置时区。 )

关于Python:关于美国/太平洋和美国/洛杉矶时区的 datetime.astimezone 的奇怪行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10080790/

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