Использование модуля Zope DateTime
Будьте внимательнее при использовании преобразования строки даты с помощью модуля Zope DateTime.
Недавно я был удивлён некоторым отличием в способах, которыми модуль DateTime парсит строки дат в различном формате. Я то наивно полагал, что результаты не отличаются:
>>> from DateTime import DateTime >>> DateTime('2009/06/16') DateTime('2009/06/16') >>> DateTime('2009-06-16') DateTime('2009/06/16')
Вроде всё хорошо, но:
>>> DateTime('2009/06/16') == DateTime('2009-06-16') False
Подождите ка... Как?!?
>>> DateTime('2009/06/16').rfc822() 'Tue, 16 Jun 2009 00:00:00 +0200' >>> DateTime('2009-06-16').rfc822() 'Tue, 16 Jun 2009 00:00:00 +0000'
Как Вы видите, способ форматирования дат при обработке DateTime имеет значение: может добавляться часовой пояс (timezone) в результат. И это может испортить результаты запроса поиска в каталоге, если Вы используете слеши при сохранении содержимого и тире при запросах (или какой либо другой способ). Думаю, это где-то документировано, но зачем смотреть документацию, если теперь Вы "знаете" как это работает.
По материалам vlent.nl (Mark van Lent)
Перевод ООО «Комтет» komtet.ru