2010-05-05 2 views
1

В настоящее время у меня есть сценарий Python, который использует feedparser, чтобы прочитать фид и проанализировать его. Однако я недавно столкнулся с проблемой синтаксического анализа даты. Канал, который я читаю, содержит <modified>2010-05-05T24:17:54Z</modified> - который появляется в Python как объект datetime - 2010-05-06 00:17:54. Обратите внимание на несоответствие: запись фида была изменена на 5-м мая, в то время как python читает ее как 6-й.Правильный анализ корма ATOM

Итак, вопрос в том, почему это происходит. Является ли фид ATOM (то есть тот, кто создал фид) неправильно, поставив время как 24:17:54, или мой скрипт python ошибочен в том, как он его обрабатывает.

И могу ли я решить это?

ответ

1

Здесь есть некоторые интересные частные случаи в rfc (http://tools.ietf.org/html/rfc3339), однако обычно это для 00:00:60 против 00:00:59, чтобы разрешить прыжок секунд. Возможно, это законно. Я предполагаю, что он делает «правильную вещь». Честно говоря, дата/время все становится очень грязным из-за таких вещей, как DST и местные часовые пояса. Если его 24:17:54, это может быть правильно.

+0

Итак, полагая, что это правильно, как я могу исправить свой скрипт python, чтобы справиться с этим? – yydl

+0

@ Joseph, я бы ничего не сделал, поскольку Python, кажется, поступает правильно. Если это действительно важно, вам нужно записать часовой пояс, который использует канал, часовой пояс, который генерирует python, и часовой пояс, который вы действительно хотите, а затем использовать библиотеку datetime для правильного изменения. Но если вы не знаете, какие единицы вы используете (то есть какие часовые пояса вы используете), то вы не сможете решить проблему. – wisty

+0

@joseph согласился с wisty, python делает правильные вещи, там действительно ничего не исправить. – dlamotte

0

Я думаю, что сегодня в 24:17 разумно проанализирован как завтра в 00:17 .... Я думаю, что вы хорошо справляетесь с ошибкой производителя.

+0

Не совсем: я знаю, что производитель действительно означает 00:17 сегодня. Завтра будет в будущем ... – yydl