【问题标题】:Convert timestamp to another timezone in Python在 Python 中将时间戳转换为另一个时区
【发布时间】: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

我看到两个问题:

  1. 默认情况下,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
  2. 为什么我在 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


【解决方案1】:

datetime.fromtimestamp 接受一个参数tz,它允许您提供时区信息,请参阅the docs。此外,如果您只使用 UTC 偏移量,则不需要第三方库。您可以简单地从timedelta 构造一个timezone

from datetime import datetime, timezone, timedelta

ts = 1596533395 
dt_UTCplus2 = datetime.fromtimestamp(ts, tz=timezone(timedelta(hours=2)))
print(dt_UTCplus2)
# 2020-08-04 11:29:55+02:00

dt_UTCminus5 = dt_UTCplus2.astimezone(timezone(timedelta(hours=-5)))
print(dt_UTCminus5)
# 2020-08-04 04:29:55-05:00

如果您使用时区而不是 UTC 偏移量,我建议您使用dateutilpytz 将随着 Python 3.9 的发布而被弃用):

from datetime import datetime
from dateutil import tz

ts = 1596533395 
dt_UTCplus2 = datetime.fromtimestamp(ts, tz=tz.gettz("Etc/GMT-2"))
print(dt_UTCplus2)
# 2020-08-04 11:29:55+02:00

dt_UTCminus5 = dt_UTCplus2.astimezone(tz.gettz("Etc/GMT+5"))
print(dt_UTCminus5)
# 2020-08-04 04:29:55-05:00

【讨论】:

    猜你喜欢
    • 2015-11-05
    • 2012-01-30
    • 2015-05-06
    • 2011-11-11
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 2011-05-10
    相关资源
    最近更新 更多