Python 就'pd.Timestamp'中的时区而言,-753是什么意思`
输出:Python 就'pd.Timestamp'中的时区而言,-753是什么意思`,python,pandas,timestamp,Python,Pandas,Timestamp,输出: tz = pytz.timezone('America/Los_Angeles') t1 = pd.Timestamp(datetime.datetime(2019, 2, 6, 17, 0, 0, tzinfo=tz)) t1 tz = pytz.timezone('America/Los_Angeles') t1 = datetime.datetime(2019, 2, 6, 17, 0, 0) t1 = tz.localize(t1) t1 = pd.Timestamp(t1)
tz = pytz.timezone('America/Los_Angeles')
t1 = pd.Timestamp(datetime.datetime(2019, 2, 6, 17, 0, 0, tzinfo=tz))
t1
tz = pytz.timezone('America/Los_Angeles')
t1 = datetime.datetime(2019, 2, 6, 17, 0, 0)
t1 = tz.localize(t1)
t1 = pd.Timestamp(t1)
t1
为什么是-0753
更新:
经过一些研究,这种方法似乎有效:
我可能做得不对,见下文
Timestamp('2019-02-06 17:00:00-0753', tz='America/Los_Angeles')
输出:
tz = pytz.timezone('America/Los_Angeles')
t1 = pd.Timestamp(datetime.datetime(2019, 2, 6, 17, 0, 0, tzinfo=tz))
t1
tz = pytz.timezone('America/Los_Angeles')
t1 = datetime.datetime(2019, 2, 6, 17, 0, 0)
t1 = tz.localize(t1)
t1 = pd.Timestamp(t1)
t1
当传递给
datetime.datetime
时,应该是什么类型的对象呢?我不知道为什么,但是这个奇怪的时区偏移量来自pytz。见下面的代码:
Timestamp('2019-02-06 17:00:00-0800', tz='America/Los_Angeles')
因此,如果您试图创建日期时间并提供tzinfo
,它将创建此偏移量
Upd.
我检查了pytz,发现下一个:
OLSON_VERSION = '2019a'
不幸的是,对于许多时区,使用标准datetime构造函数的tzinfo参数“不适用于”pytz
不过,对于没有夏令时转换的时区(如UTC),它是安全的
好吧,他们说了,但不要指出原因。让我们试着找到它。在pytz资料中,我找到了他们使用的版本:
>>>print(datetime(2019, 5, 10, tzinfo=pytz.timezone('America/Los_Angeles')))
2019-05-10 00:00:00-07:53
>>>print(pytz.timezone('America/Los_Angeles').localize(datetime(2019, 5, 10)))
2019-05-10 00:00:00-07:00
下载并解压文件“northamerica”中的数据库后,我发现下一步:
OLSON_VERSION = '2019a'
-7:52:58
与我们的-07:53
非常接近
结论:在pytz中有一个包含所有已知时区偏移的数据库。当我们将tzinfo传递给datetime的构造函数时,它会得到第一个已知的时区,并在本地化方法时使用它,该方法调用并传递tzinfo,以某种方式获得正确的时区偏移量
要检查它,我在同一个文件中找到了另一个时区:
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:07:02
-8:00 US P%sT 1946
-8:00 CA P%sT 1967
-8:00 US P%sT
然后我启动了下一个代码:
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Toronto -5:17:32 - LMT 1895
-5:00 Canada E%sT 1919
-5:00 Toronto E%sT 1942 Feb 9 2:00s
-5:00 Canada E%sT 1946
-5:00 Toronto E%sT 1974
-5:00 Canada E%sT
正如你们所看到的,结果是一样的。它使用了
-5:17:32
,这是列表中的第一个偏移量。-0753
是时区偏移量。但对于洛杉矶来说,应该是-0700
,所以。。我不知道为什么,例如提供的号码:D@OlvinRoght,我觉得这可能与节日时间问题有关,但不知道如何处理。您是否使用pytz在时区之间切换?现在,我想了解当将UTC时间转换为美国/洛杉矶夏令时没有意义时,如何处理dst。对于dst,它应该是-0800,而不是0753