【发布时间】:2021-02-04 18:54:36
【问题描述】:
我的传感器数据的时间戳已知为 PST(太平洋标准时间)。假设时间戳是:2020-10-21 10:00:00。我想将该时间戳转换为 UTC。 UTC 到 PST 的转换是 UTC-8。因此,UTC 中的 预期 时间戳提前 8 小时:2020-10-21 18:00:00。
我尝试进行转换:
>>> import pytz
>>> from datetime import datetime
>>> ts = datetime(2020,10,21,10,0,0)
>>> ts_local = pytz.timezone('America/Los_Angeles').localize(ts, is_dst=False)
>>> ts_local.strftime('%Y-%m-%d %H:%M:%S %Z%z')
'2020-10-21 10:00:00 PDT-0700'
>>> ts_local.astimezone(pytz.utc).strftime('%Y-%m-%d %H:%M:%S %Z%z')
'2020-10-21 17:00:00 UTC+0000'
但是您可以看到转化比预期的晚了 1 小时。这似乎是有道理的,因为ts_local 似乎在PDT 中。但是,因为我设置了is_dst=False,所以我希望ts_local 位于PST 中。
- 我已经尝试过
is_dst=True和is_dst=None(尽管这些标志值没有意义,因为时间戳是标准时间)但生成的ts_local仍然是PDT。 - 我在 Python 3.7.4 和 Python 2.7.17 中尝试过这种转换,得到了相同的结果。
- 我也尝试过使用
'US/Pacific'pytz 时区进行这种转换,但同样的问题。
我已经阅读了其他一些关于如何进行转换的 SO 答案,我所做的就是建议的内容。
【问题讨论】:
-
ts_local不在 PST;它在 PDT 中。is_dst被忽略。