У меня есть объект datetime, из которого я вычитаю 13 дней следующим образом:
(date.today()-timedelta(days=13)).strftime('%Y-%m-%d')
Странность возникает, когда я выполняю код в 6 утра и 8:30 утра.В 6 утра результирующая строка возвращается как (если сегодня 2012-02-29):
2012-02-15
, что за 14 дней до текущего!Однако при выполнении той же строки в 8:30 утра результирующая строка возвращается в виде:
2012-02-16
Что затем исправить.До сих пор я не смог выяснить, в чем разница между небольшим периодом времени.Я использую наивные объекты даты и времени, если это важно.Я хотел бы знать, что может вызвать это изменение в итоговой строковой дате.
Большое спасибо.
РЕДАКТИРОВАТЬ: (основываясь на предложении eumiro ниже)
datetime.datetime.now () возвращает:
>>> datetime.datetime(2012, 2, 29, 10, 46, 20, 659862)
И часовой пояс - Европа / Вена на сервере и в приложении django, которое выполняет строку кода.
Я также попытался запустить строку, аналогичную предложенной вами:
(pytz.timezone(settings.TIME_ZONE).localize(datetime.now(), is_dst=True) - \
timedelta(days=13)).strftime('%Y-%m-%d')
Но с теми же результатами ... поэтому я думаю, что не думаю, что это имеет многоделать с часовыми поясами тоже.Но в то же время не уверен, где еще искать.