python .timestamp()方法计算出不同时区的错误(或相同)Unix时间

时间:2019-06-07 21:56:24

标签: python pandas datetime timezone unix-timestamp

我的目标是将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时间时,restul使用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()方法是否无法正确读取时区?

谢谢

1 个答案:

答案 0 :(得分:1)

UNIX时间戳被设计为与时区无关。查看此线程Do unix timestamps change across timezones?

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