我有下面的时间戳1550588656,它在UTC时间约定中转换为2019-02-19 15:04:16+00:00。
我想把它转换成我国家的时间会议(每年这个时候是UTC或GMT -3 ),所以它应该翻译成2019-02-19 12:04:16+00:00。
我读过其他一些问题,首先我必须将时间戳转换成一个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)所以现在它不是一个天真的日期时间对象,从这里开始,我应该能够将它定位到我国的时区。在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),我不知道为什么。
有人能解释一下吗?我的直觉告诉我,这可能是一个简单的事情,我没有看到,但我已经花了一些时间在其中,我还没有能够说出。
发布于 2019-02-19 16:01:05
发布于 2019-02-19 16:31:58
首先,您有epoc时间(UTC时间戳)。您需要将其转换为datetime对象(本机),然后将本机时间转换为知道的时间,而不是最终将其转换为本地时间。
native_datetime = datetime.fromtimestamp(1550588656)local_time = utc_time.astimezone(pytz.timezone("America/Santiago"))
可以用本地时区替换"America/Santiago"。我想这能帮你解决问题。谢谢!
https://stackoverflow.com/questions/54769924
复制相似问题