[datetime] Konvertierung offset-aware datetime in offset-naive?

Hallo, weiss jemand wie zwei solch unterschiedliche datetime Instanzen vergleichen oder in das eine oder andere Format überführen kann? Andreas (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

Andreas Jung <lists@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
participants (2)
-
Andreas Jung
-
Detlef Lannert