【发布时间】:2020-11-24 09:33:19
【问题描述】:
我有一个时间戳 (1596526195),它是 GMT+2 (2020-08-04 11:29:55),我想将它转换为 GMT-5,所以它应该是 2020-08-04 04:29:55。
目前,我的脚本是:
import pytz
from datetime import datetime
time_zone = "Etc/GMT-5"
ts = 1596533395
ts_date = datetime.fromtimestamp(ts)
print(ts_date) # 2020-08-04 11:29:55+00:00
ts_date_converted = pytz.utc.localize(ts_date).astimezone(pytz.timezone(time_zone))
print(ts_date_converted) # 2020-08-04 16:29:55+05:00
我看到两个问题:
- 默认情况下,python 将
ts视为 GMT+0。如何告诉 python 将ts读取为 GMT+2 ?我不想转换它,因为在这种情况下它会改变ts_date,不是吗?ts_date应该是2020-08-04 11:29:55+02:00,而不是2020-08-04 09:29:55+00:00 - 为什么我在 GMT+5 中得到结果,而我试图在 GMT-5 中进行转换?
ts_date_converted应该是2020-08-04 04:29:55-05:00我相信
谢谢
【问题讨论】:
-
请注意,GMT-5(您的示例中为 2020-08-04 04:29:55)将是“Etc/GMT+5”,在那里命名有点混乱
-
...以及关于 默认情况下 python 将 ts 视为 GMT+0 的旁注:是的,但除非您提供
tz(请参阅我的回答),否则您将收到一个简单的日期时间对象(无时区),但代表 本地时间(即根据您的操作系统时区设置)。这与默认为 UTC 的其他语言不同 - 所以那里是另一个混淆者。 -
好吧,GMT-5 是 ETC/GMT+5 真的很令人困惑...
标签: python datetime timezone pytz timestamp-with-timezone