Ich habe ein Feld timestamp = models.DateTimeField (auto_now_add = True) in der db. Ich möchte den Unterschied zwischen diesem Zeitstempel und datetime.now () finden.
Wenn ich datetime.now () - timestamp ausprobiert habe, bekomme ich den Fehler:
%Vor%Wie behebe ich das?
Dieser Fehler bezieht sich darauf, wie Zeiten von Python gespeichert werden. Laut der Python Dokumentation :
Es gibt zwei Arten von Datums- und Zeitobjekten: "naiv" und "bewusst". Diese Unterscheidung bezieht sich darauf, ob das Objekt eine Vorstellung von Zeitzone, Sommerzeit oder einer anderen Art von algorithmischer oder politischer Zeitanpassung hat.
In der django Dokumentation steht das auch :
%Vor%Wenn die Zeitzonenunterstützung deaktiviert ist, verwendet Django naive Datetime-Objekte in Ortszeit. Dies ist für viele Anwendungsfälle einfach und ausreichend. Im Um in diesem Modus die aktuelle Zeit zu erhalten, würden Sie schreiben:
%Vor%Wenn die Zeitzonenunterstützung aktiviert ist, Django verwendet zeitzonenbewusste Datetime-Objekte. Wenn Ihr Code erstellt wird Datetime-Objekte sollten sie ebenfalls beachten. In diesem Modus das Beispiel oben wird:
Sie sollten bestimmen, ob Sie Zeitzonenbewusstsein auf Ihrer Site haben möchten und dann Ihre gespeicherten Zeiten entsprechend anpassen. Um ein bewusstes dt in naiv zu konvertieren, können Sie das pytz-Modul verwenden und dies tun:
%Vor% Dies funktioniert, weil alle Python-Datumsangaben ein optionales Zeitzonenattribut, tzinfo
, haben, das verwendet werden kann, um Informationen über den Offset des Dt von der UTC-Zeit zu speichern.
Tags und Links datetime django-models timestamp