我有以下时间戳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)
但是我得到了qazxsw poi(UTC或GMT -6),我不知道为什么。
谁能解释一下?我的直觉告诉我,这可能是一个我不看的简单事情,但我已经花了几分钟时间,我还没有说清楚。
如果你看看2019-02-19 09:04:16-03:00
:
返回与POSIX时间戳对应的本地日期和时间
所以问题是它已经在从UTC转换到本地时间,而你第二次这样做了。
首先,你有epoc时间(UTC时间戳)。您需要将其转换为datetime对象(本机),然后将本机时间转换为感知时间,最后将其转换为本地时间。
fromtimestamp
native_datetime = datetime.fromtimestamp(1550588656)
import pytz
utc_time = native_datetime.replace(tzinfo=pytz.timezone("UTC"))
您可以将“America / Santiago”替换为您当地的时区我认为这可以帮助您解决问题。谢谢!