Formatowanie daty dla RSS/Atom

Podczas importowania moich postów ze starego bloga do Nikoli, zastanawiałem się nad wygenerowaniem pliku atom i zaimportowaniem go do Nikoli używając jednego z jej importerów. Ostatecznie wygenerowałem same pliki z postami, ale po drodze dowiedziałem się, jak sformatować obiekt DateTime zgodnie z normą rfc3339 (która jest wymagana przez protokół Atom i RSS)

Istnieje oczywiście biblioteka rfc3339 która pomoże zformatować datę poprawnie:

>>> from rfc3339 import rfc3339
>>> from datetime import datetime
>>>
>>> now = datetime.strptime('2013/04/17 22:22:14', '%Y/%m/%d %H:%M:%S')
>>> now
datetime.datetime(2013, 4, 17, 22, 22, 14)
>>> rfc3339(now)
'2013-04-17T22:22:14+02:00'

Może się jednak zdażyć, że obiekt nie posiada określonej strefy czasowej, a pracujesz na systemie, który posiada inną strefę czasową ustawioną. W tym wypadku potrzebna będzie również biblioteka pytz i stworzenie konkretnej strefy czasowej, a następnie "zlokalizowanie' daty:

>>> import pytz
>>> warsaw = pytz.timezone('Europe/Warsaw')
>>> warsaw.localize(now)
datetime.datetime(2013, 4, 17, 22, 22, 14, tzinfo=<DstTzInfo 'Europe/Warsaw' CEST+2:00:00 DST>)
>>> rfc3339(warsaw.localize(now))
'2013-04-17T22:22:14+01:00'

Jest oczywiście problem określenia strefy zcasowej, z jaką data została utworzona, jeśli pobieramy ją z bazy danych...

Komentarze

Comments powered by Disqus