我有一个具体时区时间的日期数据,但系统将其视为UTC,并在之后将其转换回该时区,导致时间混乱。
例如,我收到了这个时间:
例如(代码片段):
例如,我收到了这个时间:
2014-05-05 10:50:30
。它是一个日期时间对象,没有时区信息,但我可以从使用该时间的用户那里获取时区信息。问题在于,这个时间显示为“Europe / Vilnius”时间,但系统将其视为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。 如果时区是“Europe / Vilnius”,则应将该时间转换为2014-05-05 07:50:30
。 然后当系统自动进行转换时,它将正确显示2014-05-05 10:50:30
,因为这是应该显示的时间。
如果有一种方法只获得特定时区与UTC之间的小时数,那么我只需要:
create_date.replace(hour=create_date.hour-timezone_difference)