/ / Mongo ObjectID: "Kann offsetnaive und offsetbewusste Daten nicht vergleichen", auch nicht mit pytz - python, mongodb, datetime, timezone, pymongo

Mongo ObjectID: "Offset-naive und offsetabhängige Datumszeiten können nicht verglichen werden", selbst mit Pytz - Python, Mongodb, Datumszeit, Zeitzone, Pymongo

Ich versuche, ObjectIDs Zeitstempel mit zu verschönern py-hübsch aber es gibt mir immer wieder einen TypeError:

TypeError: can"t compare offset-naive and offset-aware datetimes

Selbst nachdem ich versucht habe, den Zeitstempel in eine Zeitzone zu konvertieren, die kein UTC-Datum mit Pytz kennt. Dies ist der Code, den ich versuche

import datetime
import pytz
import pretty
# ...

song = db.songs.find_one( { "GUID" : 0123 } )
dateTimeUnaware = song["_id"].generation_time.now(pytz.utc)
prettyDate = pretty.date( dateTimeUnaware )

Warum gibt mir das immer wieder den Tippfehler? Sollte die Pytz-Funktion die Zeitzone nicht unabhängig machen?

Antworten:

18 für die Antwort № 1

Ich bin kein py-pretty Experte, aber Ihr Code konvertiert kein Datum, das die Zeitzone kennt, in ein Datum, das die Zeitzone nicht kennt.

Es wird nur das aktuelle Datum angezeigt (mit now) in der UTC-Zeitzone (also zeitzonenabhängig).

Sie können tz-aware datetime naiv in tz-unknown one konvertieren, indem Sie Folgendes verwenden:

your_datetime_var.replace(tzinfo=None)

in Ihrem Fall:

song["_id"].generation_time.replace(tzinfo=None)

Beachten Sie, dass "naiv" in diesem Fall bedeutet, dass alle Felder, die sich auf Datum und Uhrzeit beziehen, denselben Wert wie das Original haben, aber die Informationen zu Zeitzone und Sommerzeit verloren gehen.

Übrigens sieht es so aus, als ob py-pretty nicht gepflegt ist (letzter Upload auf pypi im Jahr 2010, Quellcode nicht verfügbar). Daher ist es möglicherweise eine gute Idee, nach Ersatz zu suchen