2014-11-10 3 views
2

Я делаю приложение событий в джанго.Вопрос о временном поясе DST в приложении django

В этом случае мне нужно сделать копию одного объекта события (строки/записи в БД) в другой. Он создает другой объект с одинаковыми деталями.

Этот объект события включает часовой пояс и дневной свет Сохранение.

У меня проблемы с DST. Я использовал временную дельта 5 дней при копировании объектов.


В обычные дни

объект Event 1 Дата: 10 ноября 2014 10:36 утра

объект Event 2 (копия 1) дата: 15 ноября 2014 10 : 36 утра

Это хорошо ..!


Но в дни ДПС я не хочу, чтобы это изменение составляло 1 час.

объект Event 1 Дата: 30 октября 2015, 10:36 утра

объект Event 2 (копия 1) дата : ноя 4, 2015, 9:36 утра


Здесь 1 час автоматически уменьшается в объекте 2 во время изменения DST (30 октября принадлежит DST, ноябрь 4 нет). Но я хочу того же времени. Как я могу это исправить???

ответ

0

Работа с алгеброй 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/#localized-times-and-date-arithmetic