将熊猫时间戳的时区设置为博伊西

时间:2019-03-17 15:26:28

标签: python pandas timezone

我想将一个unix时间读入一个时间戳,并分配Boise的时区。当前时区为“ MDT –山区夏令时(夏令时)”。在冬季,它将切换到MST。

当我想使其不依赖于夏/冬时,什么是正确的时区?

我想要这样的东西

pd.Timestamp(1513393355, unit='s', tz='US/Pacific') 

2 个答案:

答案 0 :(得分:2)

几件事:

  • 一般来说,美国山区时间的大部分时间应该使用America/Denver,目前美国山区时间在MST(UTC-7)和MDT(UTC-6)之间切换。

  • 在美国山区时间当前未使用DST的美国山区时间部分使用America/Phoenix,例如在亚利桑那州的大部分(但不是全部)中使用的DST。

    • 但是,请注意,过去曾有DST,过去是1968年。
  • 如果需要的固定偏移量为UTC-7,并且从不具有DST,请使用Etc/GMT+7。请注意,偏移量的符号是故意反转的(Etc/GMT+7 = UTC-7)。

    • 如果您将这个区域用于海上航行,而不是用于其他时间,那么您可能应该重新评估这个决定。换句话说,如果您的数据用于<​​em>确实使用DST的本地时区,那么您不应选择忽略它的时区。
  • 您可以使用America/Boise,但只应在1974年下半年开始夏令时(DST)的爱达荷州南部和俄勒冈州东部(1974-02-03而不是{{1} }),如the commentary of the TZ Database sources中所述:

    1974-01-06
    • 如果您不使用1974年以来的时间戳,则可以忽略此区域,而只需使用# Southern Idaho (Ada, Adams, Bannock, Bear Lake, Bingham, Blaine, # Boise, Bonneville, Butte, Camas, Canyon, Caribou, Cassia, Clark, # Custer, Elmore, Franklin, Fremont, Gem, Gooding, Jefferson, Jerome, # Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power, # Teton, Twin Falls, Valley, Washington counties, and the southern # quarter of Idaho county) and eastern Oregon (most of Malheur County) # switched four weeks late in 1974.
  • 可以使用America/Denver,但可以理解,它是作为US/Mountain的别名链接的,因此已被弃用。存在它是为了向后兼容。

    • 通常建议使用America/Denver格式的规范标识符,而不是这些较旧的表示形式。请参阅Wikipedia上的list of TZ Database time zones

答案 1 :(得分:1)

这会将1513393355解释为UTC的时间戳,然后将时间戳转换为America/Boise时区:

In [57]: pd.Timestamp(1513393355, unit='s', tz='UTC').tz_convert('America/Boise')
Out[57]: Timestamp('2017-12-15 20:02:35-0700', tz='America/Boise')

熊猫依赖pytz进行时区计算。 pytz取决于Olson数据库。 Olson数据库包含每个时区的utc偏移量的历史记录。因此,您不必担心夏令时是否在特定日期生效。 tz_convert将为您解决这个问题。

您可以使用pytz.timezones查看所有选项。

有一个US/Mountain时区,但它是deprecated。 有关相关选项的更多权威信息,请参见Matt Johnson's answer