Wie erkenne ich den Zeitunterschied in Minuten zwischen zwei datetime
Objekten?
python
datetime
date-arithmetic
Hobhouse
quelle
quelle
delorean
falsch dargestelltdatetime
,pytz
Ansatz z. B. könnte das Codebeispiel für den Einstieg alsd = datetime.now(timezone(EST))
(eine lesbare Zeile anstelle von fünf) geschrieben werden.Neu bei Python 2.7 ist die
timedelta
Instanzmethode.total_seconds()
. In den Python-Dokumenten entspricht dies(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6
.Referenz: http://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds
quelle
elapsedTime / timedelta(minutes=1)
, um die Differenz in Minuten in Python 3Verwenden Sie das Datum / Uhrzeit-Beispiel
Dauer in Jahren
Dauer in Tagen
Dauer in Stunden
Dauer in Minuten
Dauer in Sekunden
Dauer in Mikrosekunden
Gesamtdauer zwischen den beiden Daten
oder einfach:
Edit 2019 Da diese Antwort an Bedeutung gewonnen hat, werde ich eine Funktion hinzufügen, die die Verwendung für einige vereinfachen könnte
quelle
TypeError: 'float' object is not subscriptable
bei der Verwendung für:then = datetime(2017, 8, 11, 15, 58, tzinfo=pytz.UTC)
now = datetime(2018, 8, 11, 15, 58, tzinfo=pytz.UTC)
getDuration(then, now, 'years')
Subtrahieren Sie einfach voneinander. Sie erhalten ein
timedelta
Objekt mit dem Unterschied.Sie können konvertieren
dd.days
,dd.seconds
unddd.microseconds
zu Minuten.quelle
Wenn
a
,b
sind Datum / Uhrzeit-Objekte, um den Zeitunterschied zwischen ihnen in Python 3 zu ermitteln:Bei früheren Python-Versionen:
Wenn
a
,b
sind naiv Datetime - Objekte wie durch zurückdatetime.now()
dann das Ergebnis falsch sein kann , wenn die Objekte Ortszeit mit unterschiedlichen UTC Offsets zB um DST Übergänge oder für vergangene / zukünftige Termine vertreten. Weitere Details: Finden Sie heraus, ob zwischen den Daten 24 Stunden vergangen sind - Python .Verwenden Sie UTC-Zeit- oder zeitzonenbezogene Datums- / Uhrzeitobjekte, um zuverlässige Ergebnisse zu erhalten.
quelle
Verwenden Sie divmod:
quelle
So erhalte ich die Anzahl der Stunden, die zwischen zwei datetime.datetime-Objekten vergangen sind:
quelle
timedelta.seconds
Gibt nur die Anzahl der explizit gespeicherten Sekunden an - die Dokumentation garantiert weniger als einen Tag. Sie möchten(after - before).total_seconds()
, was die Anzahl der Sekunden angibt, die das gesamte Delta umfassen.(after - before).total_seconds() // 3600
(Python 2.7) oder(after - before) // timedelta(seconds=3600)
(Python 3)Um nur die Anzahl der Tage zu ermitteln: timedelta hat das Attribut 'Tage'. Sie können das einfach abfragen.
quelle
Ich dachte nur, es könnte nützlich sein, die Formatierung auch in Bezug auf das Zeitdelta zu erwähnen. strptime () analysiert eine Zeichenfolge, die eine Zeit gemäß einem Format darstellt.
Dies gibt Folgendes aus: 0: 05: 00.518000
quelle
Ich benutze so etwas:
quelle
return t1-t2
Hiermit wird der Unterschied zwischen der aktuellen Zeit und 9.30 Uhr ermittelt
quelle
Dies ist mein Ansatz mit mktime .
quelle
mktime()
erwartet Ortszeit als Eingabe. Die Ortszeit ist möglicherweise nicht eindeutig und gibtmktime()
in diesem Fall möglicherweise eine falsche Antwort zurück. Verwenden Siea - b
stattdessen (a, b - datetime-Objekte) .mktime()
ist unnötig und es ist manchmal falsch. Verwenden Sie es in diesem Fall nicht.Auf andere Weise, um einen Unterschied zwischen dem Datum zu erhalten;
Also Ausgabe in min.
Vielen Dank
quelle
Ich habe Zeitunterschiede für kontinuierliche Integrationstests verwendet, um meine Funktionen zu überprüfen und zu verbessern. Hier ist einfacher Code, wenn jemand ihn braucht
Verwenden von:
und ich habe so etwas in der Protokollausgabe
quelle
Basierend auf der großartigen Antwort von @Attaque schlage ich eine kürzere vereinfachte Version des Datums- / Zeitdifferenzrechners vor:
Ich habe es geändert, um zu vermeiden, dass sich wiederholende Funktionen deklariert werden, das hübsche Standardintervall für den Druck entfernt und die Unterstützung für Millisekunden, Wochen und ISO-Monate hinzugefügt (die Monate sind nur ungefähr, basierend auf der Annahme, dass jeder Monat gleich ist
365/12
).Welches produziert:
quelle