[Python-de] [datetime] Konvertierung offset-aware datetime in offset-naive?
Detlef Lannert
lannert at uni-duesseldorf.de
So Aug 26 22:47:36 UTC 2007
Andreas Jung <lists at zopyx.com> wrote:
> weiss jemand wie zwei solch unterschiedliche datetime Instanzen vergleichen
> oder in das eine oder andere Format überführen kann?
> (Pdb) self._D
> datetime.datetime(1997, 3, 9, 13, 45, tzinfo=<DstTzInfo 'US/Eastern' EST-1
> day, 19:00:00 STD>)
>
> (Pdb) datetime.now()
> datetime.datetime(2007, 8, 26, 10, 3, 51, 376135)
>
> (Pdb) self._D < datetime.now()
> *** TypeError: can't compare offset-naive and offset-aware datetimes
Es funktioniert, wenn Du dem "Jetztzeitstempel" beibringst, zu welcher
Zeitzone er gehört. Wahrscheinlich gibt es (mindestens) eine elegantere
Möglichkeit, aber es geht z.B. mit dem Timezone-Database-Modul (ggf.
installieren mit "apt-get python-tz" oder Entsprechendem):
>>> from pytz import timezone
>>> jetzt = datetime.now() # ? wie auch immer ...
>>> tzjetzt = datetime.datetime(*(jetzt.timetuple()[:6]),
... **{"tzinfo":timezone("CET")})
>>> tzjetzt
datetime.datetime(2007, 8, 26, 10, 3, 51, tzinfo=<DstTzInfo 'CET'
CET+1:00:00 STD>)
>>> self._D < tzjetzt
True
... sollte dann gehen. Hmm, ziemlich umständlich ... Hoffe, es hilft
trotzdem.
Detlef