为什么19011214的纽约/UTC之间有4分钟的时区转换?

2024-10-03 09:10:22 发布

您现在位置:Python中文网/ 问答频道 /正文

在处理熊猫的历史数据时,我遇到了这种特殊的时区变化,我想了解它,以便正确处理它

s = pd.Series(["1901-12-12 10:00:00", "1901-12-13 10:00:00", "1901-12-14 10:00:00", "1901-12-16 10:00:00"],
 dtype= "datetime64[ns, America/New_York]")
s
>>>
 
0   1901-12-12 10:00:00-04:56
1   1901-12-13 10:00:00-04:56   ###  4 minute shift
2   1901-12-14 10:00:00-05:00
3   1901-12-16 10:00:00-05:00
dtype: datetime64[ns, America/New_York]

研究这一点,它似乎不是一个bug,而是与本地平均时间有关,这里也表示了这一点:

from pytz import timezone
timezone("America/New_York")
>>> 
<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>  ## LMT and 4 minute oddity

Here,你可以读到LMT是一个系统,意味着每度经度4分钟的移动,在60年代被standard time取代,被UTC取代

我很难找到与LMT和标准时间之间的变化有关的任何真实日期,我肯定找不到1901-12-14的日期

我知道不同地区可能在不同的时间采用不同的系统,历史数据可能不一致,但对于这些系统变化和/或熊猫为何使用某些日期的任何解释,我将不胜感激

我的次级问题:

  • 1901-12-14的时区转换正确吗
  • 为什么会有时区转换
  • 在熊猫中处理这个日期前后的数据时,是否存在重要的陷阱

多谢各位


Tags: new系统时间正确处理seriespd历史数据ns