将时间戳的时区设置为Bois

2024-06-17 12:08:40 发布

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

我想把unix时间读入一个时间戳,并指定Boise的时区。当前时区有“MDT–山地夏令时(夏令时)”。它将在冬季切换到MST。你知道吗

当我想让时区不依赖于夏季/冬季时,正确的时区是什么?你知道吗

我想要这样的东西

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

Tags: 时间unixunittimestamptzpdusmst
2条回答

有几件事:

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

  • 使用America/Phoenix作为美国山地时间中目前不使用DST的部分,例如亚利桑那州的大多数(但不是所有)地区。你知道吗

    • 但是,请注意,过去使用DST是在1968年。你知道吗
  • 如果您需要一个固定的偏移量,即UTC-7和从不有DST,请使用Etc/GMT+7。请注意,偏移量的符号是有意反转的(Etc/GMT+7=UTC-7)。你知道吗

    • 如果你使用这个区域的目的不是为了船只在海上航行,那么你可能应该重新评估这个决定。换句话说,如果您的数据是针对使用DST的本地时区,那么您不应该选择忽略它的时区。你知道吗
  • 您可以使用America/Boise,但是您应该只在爱达荷州南部和俄勒冈州东部地区使用它,这些地区在1974年晚4周开始使用DST(1974-02-03而不是1974-01-06),如the commentary of the TZ Database sources所述:

    # 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.
    
    • 如果您不使用1974年的时间戳,那么可以忽略此区域,只使用America/Denver。你知道吗
  • 可以使用US/Mountain,但要知道它是作为America/Denver的别名链接的,因此被认为是不推荐使用的。它的存在是为了向后兼容。你知道吗

    • 通常建议使用Area/Locality形式的规范标识符,而不是这些旧的表示形式。请参阅维基百科上的list of TZ Database time zones。你知道吗

这将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会帮你处理的。你知道吗

您可以使用^{}查看所有选项。你知道吗

有一个US/Mountain时区,但它是deprecated。 请参阅Matt Johnson's answer,以获取有关相关选项的更权威信息。你知道吗

相关问题 更多 >