Unterschied zwischen Python-Datums- und Zeitmodulen

136

Ich versuche , die Unterschiede zwischen dem , um herauszufinden , datetimeund timeModule, und was jeder sollte verwendet werden.

Ich weiß, dass dies datetimesowohl Datum als auch Uhrzeit liefert. Was nützt das timeModul?

Beispiele wären willkommen und Unterschiede in Bezug auf Zeitzonen wären besonders von Interesse.

myusuf3
quelle

Antworten:

101

Das timeModul ist hauptsächlich für die Arbeit mit Unix-Zeitstempeln vorgesehen. ausgedrückt als Gleitkommazahl, die seit der Unix-Epoche Sekunden beträgt. Das datetimeModul kann viele der gleichen Vorgänge unterstützen, bietet jedoch eine objektorientiertere Gruppe von Typen und unterstützt Zeitzonen nur eingeschränkt.

SingleNegationElimination
quelle
22
Was sind die Unterschiede zwischen timeund datetime.time?
SparkAndShine
Wäre schön Details zu detaillieren, wenn es in Echtzeit / monoton ist. Wie im POSIX-Standard haben Sie: CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_THREAD usw. Zu POSIX-Uhren siehe: stackoverflow.com/questions/3523442/…
Vajk Hermecz
11

Halten Sie sich an time, um Mehrdeutigkeiten in der Sommerzeit zu vermeiden.

Verwenden Sie ausschließlich das Systemmodul timeanstelle des datetimeModuls, um Mehrdeutigkeitsprobleme mit der Sommerzeit (DST) zu vermeiden .

Die Konvertierung in ein beliebiges Zeitformat, einschließlich der Ortszeit, ist ziemlich einfach:

import time
t = time.time()

time.strftime('%Y-%m-%d %H:%M %Z', time.localtime(t))
'2019-05-27 12:03 CEST'

time.strftime('%Y-%m-%d %H:%M %Z', time.gmtime(t))
'2019-05-27 10:03 GMT'

time.time()ist eine Gleitkommazahl, die die Zeit in Sekunden seit der Systemepoche darstellt. time.time()ist ideal für eindeutige Zeitstempel.

Wenn das System zusätzlich das Network Time Protocol (NTP) ausführt Dæmon ausführt, erhält man eine ziemlich solide Zeitbasis.

Hier ist die Dokumentation des timeModuls.

Serge Stroobandt
quelle
In Ihrem Beispiel verwenden Sie time.localtime(), in das natürlich die Sommerzeit eingebrannt ist. Wenn wir Puristen sein wollen, sollten wir nicht time.gmtime()stattdessen verwenden? :)
Seamus
@Seamus Das einfache Testen beider Befehle in ipythonzeigt, dass time.gmtime()ein Tupel erhalten wird, während time.time()die UNIX-Epochenzeit als ein einzelner Dezimalwert von Sekunden angegeben wird, der seit 00:00:00 UTC, Donnerstag, 1. Januar 1970, vergangen ist. Die Funktion time.localtime(t)konvertiert die Epochenzeit in eine lokale Zeittupel. Die Antwort auf Ihre Frage lautet also «nein».
Serge Stroobandt
Gibt es eine Möglichkeit, einem Zeitobjekt Tage hinzuzufügen? Mit datetime gibt es die timedelta-Methode (Tage = 6).
Nehemias Herrera
@NehemiasHerrera t = time.time()ist eine Gleitkommazahl, die die Zeit in Sekunden seit der Systemepoche darstellt . Daher kann man einfach 86400 Sekunden für jeden Tag addieren oder subtrahieren; t += 86400
Serge Stroobandt
5

Das Zeitmodul kann verwendet werden, wenn Sie nur die Zeit eines bestimmten Datensatzes benötigen. Nehmen wir an, Sie haben für jeden Tag eine separate Tabelle / Datei für die Transaktionen, dann benötigen Sie nur die Zeit. Der Zeitdatentyp wird jedoch normalerweise zum Speichern der Zeitdifferenz verwendet zwischen zwei Zeitpunkten .

Dies kann auch mit datetime erfolgen. Wenn es sich jedoch nur um die Zeit für einen bestimmten Tag handelt, kann das Zeitmodul verwendet werden.

Datetime wird verwendet, um bestimmte Daten und Zeiten für einen Datensatz zu speichern. Wie in einer Vermietungsagentur. Das Fälligkeitsdatum wäre ein Datetime-Datentyp.

Jan S.
quelle
3

Wenn Sie an Zeitzonen interessiert sind, sollten Sie die Verwendung von Pytz in Betracht ziehen.

Donkopotamus
quelle
8
Es hört sich so an, als wäre er am meisten an den Zeit- und Datums- / Uhrzeitmodulen und den Unterschieden der Zeitzonen zwischen ihnen interessiert. Bei allem Respekt ist es ziemlich irrelevant, eine weitere Abhängigkeit in diese zu bringen.
Sbartell
3
Die Unterstützung von Zeitzonen sowohl im Zeit- als auch im Datums- / Uhrzeitmodul ist wirklich sehr schlecht. Wenn er wirklich daran interessiert ist, Zeitzonen auf nützliche Weise zu behandeln, sollte er wirklich etwas über Pytz wissen. Sie bringen Abhängigkeiten ein, um das Problem zu lösen, dass Ihre aktuellen Abhängigkeiten Ihnen nicht bei der Lösung Ihres Problems helfen ...
donkopotamus