DST проблема с часовым поясом в приложении Django
Я делаю приложение событий в Django.
В этом мне нужно сделать копию одного объекта события (строки / записи в БД) в другой. Создает другой объект с такими же деталями.
Этот объект события включает в себя часовой пояс и дневной свет.
Я сталкиваюсь с проблемами во время DST. Я применил дельту времени 5 дней при копировании объектов.
В обычные дни
Объект события 1 дата: 10 ноября 2014 г. 10:36
Объект события 2(копия 1) дата: 15 ноября 2014 г. 10:36
Это нормально..!
Но в дни перехода на летнее время я не хочу этого 1-часового изменения.
Объект события 1 дата: 30 октября 2015 г., 10:36
Объект события 2(копия 1) дата: 4 ноября 2015 г., 9:36
Здесь 1 час автоматически уменьшается в объекте 2 во время изменения летнего времени (30 октября - это летнее время, 4 ноября - нет). Но я хочу того же времени. Как я могу это исправить???
1 ответ
Алгебра Timedeltas работает, добавляя / вычитая время, а не даты, поэтому вы получаете на час меньше при прохождении изменений DST.
Я думаю, что самое простое решение - выполнить алгебру, используя локализованное время, а не нормализацию. Таким образом, вы будете "делать это неправильно", но вы получите то, что хотите.
Пример:
timestamp_1 = event.timestamp # we assume this datetime comes in UTC
madrid = pytz.timezone('Europe/Madrid')
madrid.localize(timestamp_1)
timestamp_2 = timestamp_1 + datetime.timedelta(days=5)
new_event = Event(timestamp=timestamp_2)
Смотрите http://pytz.sourceforge.net/