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/

Другие вопросы по тегам