【问题标题】:python .timestamp() method calcualtes wrong (or the same) unix time for different timezonespython .timestamp() 方法计算不同时区的错误(或相同)unix 时间
【发布时间】:2019-10-23 09:25:26
【问题描述】:

我的目标是将 UTM 转换为本地时间,然后转换为 Unix 时间。 这是原来的时间:

import pandas as pd
pd.to_datetime(nw_pd_file['datetime(utc)'][0],format='%Y-%m-%d %H:%M:%S')
Timestamp('2019-04-26 21:38:11')

添加UTC信息

>>> pd.to_datetime(nw_pd_file['datetime(utc)'][0],format='%Y-%m-%d %H:%M:%S').tz_localize('UTC')
Timestamp('2019-04-26 21:38:11+0000', tz='UTC')

转换为阿拉斯加当地时间:

>>> pd.to_datetime(nw_pd_file['datetime(utc)'][0],format='%Y-%m-%d %H:%M:%S').tz_localize('UTC').tz_convert(pytz.timezone("America/Anchorage"))
Timestamp('2019-04-26 13:38:11-0800', tz='America/Anchorage')

到这里为止一切都很好。但是当我将正确的本地时间转换为 unix 时间时,结果是 UTC 而不是阿拉斯加本地时间:

>>>pd.to_datetime(nw_pd_file['datetime(utc)'][0],format='%Y-%m-%d %H:%M:%S').tz_localize('UTC').tz_convert(local).timestamp()
1556314691.0

应该是什么时候

1556314691.0-8*3600=1556285891.0 # 8 表示阿拉斯加白昼时间八小时。

事实上,我得到了与时区无关的相同 Unix 时间戳:

>>> pd.to_datetime(nw_pd_file['datetime(utc)'][0],format='%Y-%m-%d %H:%M:%S').tz_localize('UTC').timestamp()
1556314691.0

timestamp() 方法是否无法正确读取时区?

谢谢

【问题讨论】:

    标签: python pandas datetime timezone unix-timestamp


    【解决方案1】:

    UNIX 时间戳设计为独立于时区。看到这个帖子Do unix timestamps change across timezones?

    您的代码将同一时间转换为两个不同的时区,但它们的 UNIX 时间戳保持不变。

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 2018-10-06
      • 2013-07-16
      • 2014-10-28
      • 2017-12-01
      • 2019-12-17
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      相关资源
      最近更新 更多