У меня есть дата, которую я получаю в определенном часовом поясе, но система обрабатывает ее как UTC, а позже преобразует ее обратно в этот часовой пояс, путая время.
Например вот так:
Я получаю на этот раз: 2014-05-05 10:50:30
. его объект даты и времени. У него нет информации о часовом поясе, но я могу получить информацию о часовом поясе от пользователя, который использует это время. Дело в том, что это время отображается как время «Европа/Вильнюс», но система обрабатывает его как UTC, и когда она выводит время пользователю, она добавляет +3 часа, показывая неправильное время. Неважно, если я изменю часовой пояс на часовой пояс пользователя для этого объекта datetime, он все равно выводит с +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)