我有我在特定时区时间获得的日期,但系统将其作为 UTC 处理,然后将其转换回该时区,混乱时间。
例如像这样:
我得到了这个时间:2014-05-05 10:50:30
。它的日期时间对象。它没有时区信息,但我可以从使用该时间的用户那里获取时区信息。问题是这个时间显示为“欧洲/维尔纽斯”时间,但系统将其作为 UTC 处理,当它向用户输出时间时,它会增加 +3 小时显示错误时间。如果我在该日期时间对象上将时区更改为用户时区并不重要,它仍然会输出 +3 小时。
例如(代码片段):
from datetime import datetime
import pytz
create_date = datetime.strptime(stage_log.create_date, "%Y-%m-%d %H:%M:%S")
tz = pytz.timezone(self.user_id.tz)
create_date = create_date.replace(tzinfo=pytz.utc)
这没有任何作用,我仍然得到错误的时间。
有没有办法将时间移动为正确的 UTC 时间(以便系统正确转换为用户时区),如下所示:
2014-05-05 10:50:30
-> 转换为 UTC。如果时区是“欧洲/维尔纽斯”,它应该将该时间转换为2014-05-05 07:50:30
. 然后当系统自动进行转换时,它会正确显示2014-05-05 10:50:30
,因为那是它应该显示的时间。
此外,如果有一种方法可以获取给定时区与 UTC 不同的小时数,那么我可以这样做:
create_date.replace(hour=create_date.hour-timezone_difference)