【发布时间】:2019-02-19 15:37:11
【问题描述】:
我有以下时间戳 1550588656 在 UTC 时间约定中转换为 2019-02-19 15:04:16+00:00。
我想将其转换为我所在国家/地区的时间约定(一年中这个时候的 UTC 或 GMT -3),因此它应该转换为 2019-02-19 12:04:16+00:00
我已阅读其他 SO 问题,首先我必须将时间戳转换为可感知 UTC 的 Datetime 对象然后对其进行本地化,我正在这样做
# string format time
naive_datetime = datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')
# string parse time
naive_datetime = datetime.strptime(naive_datetime, "%Y-%m-%d %H:%M:%S")
# make naive Datetime object UTC aware
utc_datetime = naive_datetime.replace(tzinfo=pytz.UTC)
所以现在它不是一个简单的 Datetime 对象,从这里我应该能够将它本地化到我所在国家的时区。在 Python 中是 pytz.timezone('America/Santiago')
所以应该是这样的
cltime = pytz.timezone('America/Santiago')
local_datetime = utc_datetime.astimezone(cltime)
但是结果我得到了2019-02-19 09:04:16-03:00(UTC 或 GTM -6),我不知道为什么。
谁能解释一下?我的直觉告诉我,这可能是一件简单的事情,我并没有在看,但我已经花了几分钟时间,但我还不能说出来。
【问题讨论】:
-
当我做同样的事情时,我得到
datetime.datetime(2019, 2, 19, 12, 4, 16, tzinfo=<DstTzInfo 'America/Santiago' -03-1 day, 21:00:00 DST>)。这真的是你的代码吗? -
是,here的图片
-
在您的第二段中,它转换为
2019-02-19 12:04:16-03:00。您错误地将偏移量指定为+00:00。
标签: python python-2.7 datetime timezone unix-timestamp