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

python .timestamp() method calcualtes wrong (or the same) unix time for different timezones

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

谢谢

UNIX 时间戳设计为独立于时区。查看此线程 Do unix timestamps change across timezones?

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