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