Разобрать дату и время фида Facebook в python?

  1. Я читаю ленту обновлений Facebook, используя библиотеку python 'feedparser'.
  2. Я перебираю коллекцию записей в своих шаблонах Django и отображаю результаты.
  3. Обновленное поле возвращается в виде большой длинной строки в каком-то формате, с которым я не знаком.

    Вт, 01 дек. 2009 23:55:52 +0000

Как я могу...

A) Используйте фильтр Django, чтобы очистить дату и время в цикле for шаблона.

...or...

B) Проанализируйте дату и отформатируйте обновленную дату в представлении, по существу очистив дату в наборе записей, прежде чем она будет повторена в представлении.

ПРИМЕЧАНИЕ. Я испробовал оба подхода. Фильтр дат Django не распознает его, и библиотека iso8601, которую я пытался разобрать, тоже не распознала.

У кого-нибудь есть опыт в этом? Спасибо за вашу помощь!

ОБНОВЛЕНИЕ:

Использование значения updated_parsed из feedparser в шаблоне Django не сработало. Но фрагмент фильтра Django для этой самой вещи уже существует!**

Фрагмент Django: http://www.djangosnippets.org/snippets/1595/


person Ryan Montgomery    schedule 28.12.2009    source источник


Ответы (2)


Используйте entries[i].updated_parsed вместо entries[i].updated, и feedparser вернет вам проанализированный кортеж из 9. (Документация)

Затем создайте объект datetime и передайте его в Django или отформатируйте в строку самостоятельно.

Аналогичный вопрос здесь.

person iamamac    schedule 28.12.2009
comment
Мне нравится ваше решение, но передача кортежа в фильтр Джанго, похоже, не работает. Я просто становлюсь пустым, когда использую фильтр даты. Может быть, есть лучший способ отформатировать его. - person Ryan Montgomery; 28.12.2009
comment
Я обновил сообщение со ссылкой на фильтр Django для дат feedparser. - person Ryan Montgomery; 28.12.2009

Это сработало, но мое окончательное решение оказалось не таким.

Это решение перебирает коллекцию записей ленты, которую я получаю от Facebook. Затем я анализирую дату и время и устанавливаю обновленное свойство на эту новую дату и время. (Кроме того, игнорируя +0000)

for entry in feed.entries:
        entry.updated = datetime.strptime(entry.updated, "%a, %d %b %Y %H:%M:%S +0000")

Коллекция записей возвращается в шаблон, и теперь я могу использовать фильтр «дата» Django для форматирования даты.

person Ryan Montgomery    schedule 28.12.2009
comment
Это сработало нормально, но принятое решение использует структуру feedparser, которая на +1 лучше. - person Ryan Montgomery; 28.12.2009