So berechnen Sie den Zeitunterschied in Python

Zeitdifferenzen in Python berechnen: Eine ausführliche Anleitung

Bei der Arbeit mit Datums- und Uhrzeitangaben in Python ist es oft erforderlich, die Zeitdifferenz zwischen zwei Zeitpunkten zu ermitteln. In dieser Anleitung erfahren Sie detailliert, wie Sie diese Differenz in Stunden, Minuten und Sekunden präzise berechnen können.

Nach Durcharbeitung dieses Tutorials werden Sie:

  • Den Umgang mit dem Python datetime-Modul zur Manipulation von Datum und Uhrzeit verstehen.
  • Die Natur von timedelta-Objekten und deren praktische Anwendungen kennenlernen.
  • Fähig sein, Zeitdifferenzen zwischen zwei Zeitstempeln in Stunden, Minuten und Sekunden zu berechnen.

Lassen Sie uns direkt beginnen.

Das Python datetime-Modul: Eine Einführung

Das datetime-Modul in Python ist Ihr Werkzeug für die Arbeit mit Datum und Uhrzeit. Da es zur Standardbibliothek gehört, kann es ohne zusätzliche Installation importiert werden:

import datetime

Um eine Zeitdifferenz zu berechnen, benötigen Sie zwei verschiedene Zeitstempel. Diese können sein:

  • Zwei separate Datumsobjekte,
  • Zwei separate Zeitobjekte oder
  • Eine Kombination aus beidem – sogenannte datetime-Objekte.

Erstellung eines Datumsobjekts

Zuerst importieren wir die date-Klasse aus dem datetime-Modul. Ein Datumsobjekt wird mit der Syntax datetime.date(Jahr, Monat, Tag) erzeugt. Hier ein Beispiel:

from datetime import date
date1 = datetime.date(2022, 3, 27)
print(date1)

# Ausgabe: 2022-03-27

Sie können diesen Code in einem Online-Python-Compiler testen oder Python lokal installieren. Beachten Sie, dass das Datum standardmäßig im Format JJJJ-MM-TT ausgegeben wird.

Wichtig: Monatsangaben müssen als Ganzzahlen ohne führende Nullen erfolgen. Verwenden Sie also für Juni (den 6. Monat) einfach 6 und nicht 06.

Wenn Sie versuchen, den Monat mit einer führenden Null anzugeben, führt dies zu einem Syntaxfehler:

date1 = datetime.date(2022, 03, 27)

print(date1)

# Fehlermeldung
File "<ipython-input-12-6eb72084e6ce>", line 1
    date1 = datetime.date(2022,03,27)
                                ^
SyntaxError: invalid token

Als Nächstes sehen wir uns die Erstellung eines Zeitobjekts an.

Erstellung eines Zeitobjekts

Um ein Zeitobjekt zu erzeugen, importieren wir die time-Klasse. Die Attribute sind optional: Stunde, Minute, Sekunde und Mikrosekunde, wobei fehlende Werte standardmäßig 0 sind. Hier ist ein Beispiel:

from datetime import time
time1 = datetime.time(13, 27, 45, 4600)
print(time1)

# Ausgabe: 13:27:45.004600

Erstellung eines datetime-Objekts

Während Datumsobjekte keine Zeit- und Zeitobjekte keine Datumsangaben beinhalten, bietet die datetime-Klasse die perfekte Lösung für die kombinierte Speicherung. Hier ist ein Beispiel:

dt1 = datetime.datetime(2022, 3, 27, 13, 27, 45, 46000)
print(dt1)

# Ausgabe: 2022-03-27 13:27:45.046000

Erstellen wir nun ein weiteres datetime-Objekt ohne die Sekundenangabe, die standardmäßig auf 0 gesetzt wird:

dt2 = datetime.datetime(2022, 6, 30, 14, 28)
print(dt2)

# Ausgabe: 2022-06-30 14:28:00

Sie haben nun gelernt, wie man Zeitstempel als Datum, Zeit und Datum/Zeit in Python erstellt. Betrachten wir nun, wie man die Differenz zwischen diesen Zeitstempeln berechnet.

timedelta-Objekte in Python

Ein timedelta-Objekt in Python repräsentiert eine Zeitspanne, d.h. die Differenz zwischen zwei Datum-, Zeit- oder datetime-Objekten.

Wenn Sie zwei solche Objekte subtrahieren oder addieren, ist das Ergebnis immer ein timedelta-Objekt. Dieses Objekt besitzt nützliche Attribute und Methoden zur Berechnung von Zeitunterschieden.

Berechnen wir nun die Differenz zwischen dt1 und dt2:

dt1 = datetime.datetime(2022, 3, 27, 13, 27, 45, 46000)
dt2 = datetime.datetime(2022, 6, 30, 14, 28)
tdelta = dt2 - dt1
print(tdelta)
print(type(tdelta))

# Ausgabe
95 days, 1:00:14.954000
<class 'datetime.timedelta'>

Die Variable tdelta enthält nun die Zeitdifferenz, wie der Typ datetime.timedelta bestätigt.

Zeitunterschied zwischen zwei Daten ermitteln

Betrachten wir ein konkretes Beispiel: Die Zeitdifferenz zwischen dem heutigen Datum und Ihrem Geburtstag.

Dazu definieren wir zwei datetime-Objekte: today und bday.

Die datetime-Klasse bietet die now()-Methode, um das aktuelle lokale Datum und die aktuelle Uhrzeit zu ermitteln:

today = datetime.datetime.now()
print(today)

# Beispielausgabe: 2022-01-22 09:10:18.489538

Ersetzen Sie im folgenden Code bday durch Ihren Geburtstag, um die verbleibende Zeit bis zu Ihrem Geburtstag in diesem Jahr zu berechnen:

bday = datetime.datetime(2022, 8, 30, 11, 59)
print(bday)

# Beispielausgabe: 2022-08-30 11:59:00

Die Zeitdifferenz time_diff, ein timedelta-Objekt, wird berechnet, indem today von bday subtrahiert wird:

time_diff = bday - today
print(f"Ihr Geburtstag ist in {time_diff}")

# Ausgabe
Ihr Geburtstag ist in 220 days, 2:46:00.127416

Um die Anzahl der verbleibenden Tage zu erfahren, nutzen Sie das days-Attribut von time_diff:

tdays = time_diff.days
print(f"Ihr Geburtstag ist in {tdays} Tagen.")

# Ausgabe
Ihr Geburtstag ist in 220 Tagen.

Zeitunterschied in Sekunden ermitteln

Um die Zeitdifferenz in Sekunden zu berechnen, verwenden wir die total_seconds()-Methode des timedelta-Objekts time_diff:

tsecs = time_diff.total_seconds()
print(f"Ihr Geburtstag ist noch {tsecs} Sekunden entfernt.")

# Ausgabe
Ihr Geburtstag ist noch 19017960.127416 Sekunden entfernt.

Sie wissen nun, wie Sie Zeitdifferenzen in Sekunden berechnen können.

Zur Erinnerung: Ein Tag hat 24 Stunden, eine Stunde hat 60 Minuten und eine Minute hat 60 Sekunden. Dies ist in folgender Tabelle zusammengefasst:

1 Tag 24 Stunden
1 Stunde 60 Minuten
1 Minute 60 Sekunden

Um von Sekunden in Minuten, Stunden und Tage umzurechnen, können Sie durch den entsprechenden Umrechnungsfaktor dividieren.

In den folgenden Abschnitten konvertieren wir die Zeitdifferenz in Sekunden in Minuten und Stunden.

Zeitunterschied in Minuten ermitteln

Um die Zeitdifferenz in Minuten zu erhalten, dividieren Sie die Gesamtsekunden durch 60:

tmins = tsecs / 60
print(f"Ihr Geburtstag ist noch {tmins} Minuten entfernt.")

# Ausgabe
Ihr Geburtstag ist noch 316966.0021236 Minuten entfernt.

Zeitunterschied in Stunden ermitteln

Um die Zeitdifferenz in Stunden zu erhalten, dividieren Sie die Minuten durch 60 oder die Sekunden durch 3600:

thrs = tsecs / (60 * 60)
print(f"Ihr Geburtstag ist noch {thrs} Stunden entfernt.")

# Ausgabe
Ihr Geburtstag ist noch 5282.76670206 Stunden entfernt.

Sie haben nun gelernt, wie Sie Zeitdifferenzen in jeder gewünschten Einheit berechnen können.

Zusammenfassung

In dieser Anleitung haben Sie gelernt, wie man:

  • Mit Datum- und Uhrzeitangaben mit dem Python datetime-Modul arbeitet.
  • timedelta-Objekte zur Darstellung von Zeitspannen verwendet.
  • Zeitdifferenzen in Sekunden, Minuten und Stunden berechnet.

Ich hoffe, diese Anleitung war hilfreich. Sie sind nun bereit, diese Fähigkeiten in der Praxis anzuwenden.

Viel Spaß beim Lernen und Programmieren!

Erfahren Sie hier, wie Sie Code für Gleichheit oder Ungleichheit schreiben oder ein Schlangenspiel in Python erstellen.