Wenn Sie in Python mit Daten und Zeiten arbeiten, müssen Sie oft die Zeitdifferenz berechnen. In diesem Tutorial lernen Sie, wie Sie die Differenz zwischen zwei Zeitstempeln in Stunden, Minuten und Sekunden berechnen können.
Am Ende dieses Tutorials werden Sie gelernt haben:
- wie Sie das
datetime-Modul
von Python verwenden können, um mit Daten und Zeit zu arbeiten, - was
timedelta-Objekte
sind und wie sie nützlich sind, und - die Zeitdifferenz zwischen zwei beliebigen Zeitstempeln zu berechnen – in Stunden, Minuten und Sekunden.
Lassen Sie uns beginnen.
Wie Sie das datetime-Modul von Python verwenden
Um mit Datums- und Zeitangaben in Python zu arbeiten, verwenden Sie das datetime-Modul
. Das datetime-Modul
ist Teil der Python-Standardbibliothek. Sie können es also sofort in Ihre Arbeitsumgebung importieren, etwa so:
import datetime
Um die Zeitdifferenz zu berechnen, müssen Sie zwei verschiedene Zeitstempel erstellen. Sie können wählen, ob Sie sie erstellen möchten:
- zwei
Datumsobjekte
, - zwei
Zeitobjekte
, oder - eine Kombination aus zwei
Datums-
undZeitobjekten
.
Wie man ein Datumsobjekt in Python erstellt
Importieren wir die date-Klasse
aus dem datetime-Modul. Um ein Datumsobjekt in Python zu erstellen, können Sie die allgemeine Syntax datetime.date(<Jahr>,<Monat>,<Tag>)
verwenden. Hier ist ein Beispiel für die Erstellung eines Datumsobjekts
date1
:
from datetime import date
date1 = datetime.date(2022,3,27)
print(date1)
# Ausgabe: 2022-03-27
Sie können den Code mit dem Geekflare Python-Compiler testen. Oder installieren Sie Python auf Ihrem Computer.
Wenn Sie das Datum ausgeben, wird es, wie oben gezeigt, im Format JJJJ-MM-TT
für Datumsangaben formatiert.
Hinweis: Achten Sie darauf, dass Sie den Monat als Ganzzahl ohne führende Nullen angeben. Wahrscheinlich sind Sie es gewohnt, eine führende Null an den Monat anzuhängen, wenn Sie das Datum aufschreiben.
Um zum Beispiel ein Datum im Juni, dem 6. Monat des Jahres, anzugeben, verwenden Sie 6 und nicht 06.
Versuchen Sie zum Beispiel, den folgenden Codeschnipsel auszuführen – wobei der Monat als 03
statt nur als 3
angegeben wurde. Sie werden sehen, dass er einen Syntaxfehler auslöst, wie gezeigt:
date1 = datetime.date(2022,03,27)
print(datum1)
# Fehlermeldung
Datei "<ipython-input-12-6eb72084e6ce>", Zeile 1
date1 = datetime.date(2022,03,27)
^
SyntaxFehler: ungültiges Token
Sehen wir uns nun an, wie man ein Zeitobjekt
in Python erstellt.
Wie man ein Zeitobjekt in Python erstellt
Um ein Zeitobjekt zu erstellen, importieren wir die Klasse time
. Jedes Python-Zeitobjekt kann mit der Klasse time
erstellt werden, indem Sie die folgenden Klassenattribute angeben: Stunde
, Minute
, Sekunde
und Mikrosekunde
.
Alle diese Attribute sind jedoch optional. Wenn Sie ein bestimmtes Attribut, z.B. Sekunde
, nicht angeben, wird es standardmäßig auf 0
gesetzt.
Der folgende Codeschnipsel zeigt, wie Sie ein Zeitobjekt time1
erstellen können. Wie bei dem Datumsobjekt
können Sie das Zeitobjekt
ausdrucken, um die formatierte Zeit zu sehen.
from datetime import time
time1 = datetime.time(13,27,45,4600)
print(time1)
# Ausgabe: 13:27:45.004600
Wie man ein datetime-Objekt in Python erstellt
Wie Sie sehen können, enthält das Datumsobjekt
keine Informationen über die Zeit. Und das time-Objekt
enthält keine Informationen über das Datum.
In der Praxis werden Sie jedoch sowohl die Datums- als auch die Zeitinformationen benötigen. Daher empfiehlt es sich, stattdessen die Klasse datetime
zu verwenden.
Sie können auf die datetime-Klasse
zugreifen und datetime-Objekte
in Python erstellen, wie unten gezeigt:
dt1 = datetime.datetime(2022,3,27,13,27,45,46000)
print(dt1)
# Ausgabe: 2022-03-27 13:27:45.046000
Lassen Sie uns nun ein weiteres datetime-Objekt dt2
ohne das zweite
Attribut erstellen. Sie können sehen, dass es auf 0
gesetzt ist – der Standardwert.
dt2 = datetime.datetime(2022,6,30,14,28)
print(dt2)
# Ausgabe: 2022-06-30 14:28:00
Bisher haben Sie gelernt, wie Sie in Python Zeitstempel als Datum, Uhrzeit und Datetime erstellen können. Jetzt wollen wir sehen, wie Sie die Differenz zwischen zwei beliebigen Zeitstempeln berechnen können.
Gehen Sie zum nächsten Abschnitt, um das herauszufinden.
Wie man das timedelta Objekt in Python verwendet
In Python bezeichnet timedelta
eine Zeitspanne. Es ist die Differenz zwischen zwei Datums-
, Zeit-
oder Datetime-Objekten
.
Wenn Sie zwei Datums-
, Zeit-
oder Datetime-Objekte
addieren oder subtrahieren, erhalten Sie ein timedelta-Objekt
. Dieses timedelta-Objekt
verfügt über nützliche Attribute und Methoden, die bei der Berechnung der Zeitdifferenz helfen können.
Lassen Sie uns nun die Differenz zwischen den beiden datetime-Objekten
dt1
und dt2
berechnen.
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 Tage, 1:00:14.954000
<Klasse 'datetime.timedelta'>
Aus dem obigen Codeschnipsel können Sie ersehen, dass die Variable tdelta
die Zeitdifferenz zwischen dt1
und dt2
enthält. Und der Typ von tdelta
wird mit der in Python eingebauten Funktion type()
auf die Klasse timedelta
überprüft.
Lassen Sie uns nun ein weiteres Beispiel codieren.
Wie man die Zeitdifferenz zwischen zwei Daten ermittelt
Lassen Sie uns ein einfaches, aber interessantes Beispiel nehmen.
Problem: Berechnung der Zeitdifferenz zwischen dem aktuellen Datum (heute) und Ihrem Geburtstag.
Dazu legen Sie das heutige Datum als ersten Zeitstempel und Ihren Geburtstag als zweiten Zeitstempel fest.
Als ersten Schritt erstellen wir zwei datetime-Objekte
:
- eines für heute, nennen wir es
today
, und - ein weiteres für Ihren Geburtstag, nennen wir es
bday
Die datetime-Klasse
verfügt über die Methode now()
, die Ihnen das aktuelle lokale Datum und die Uhrzeit liefert. Verwenden wir diese Methode, um das heutige Datum
zu erhalten - unser
Referenzdatum.
heute = datetime.datetime.now()
print(heute)
# Beispiel-Ausgabe: 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.
Wenn Sie dies lesen, nachdem Ihr Geburtstag bereits vergangen ist, können Sie bday
auch auf Ihren nächsten Geburtstag setzen.
bday = datetime.datetime(2022,8,30,11,59)
print(bday)
# Beispiel Ausgabe: 2022-08-30 11:59:00
Der nächste Schritt ist die Berechnung von time_diff
, einem timedleta-Objekt
, wie bereits erläutert. Ziehen Sie einfach den heutigen Tag
von Ihrem Geburtstag
ab, und Sie erhalten die Zeitdifferenz.
time_diff = bday - heute
print(f "Ihr Geburtstag ist in {time_diff}")
# Ausgabe
Ihr Geburtstag ist in 220 Tagen, 2:46:00.127416
Um die Anzahl der verbleibenden Tage zu erfahren, verwenden Sie das Attribut days von time_diff
, wie gezeigt:
tdays = time_diff.days
print(f "Ihr Geburtstag ist in {Tagen} Tagen.")
# Ausgabe
Ihr Geburtstag ist in 220 Tagen.
Wie man die Zeitdifferenz in Sekunden ermittelt
Lassen Sie uns nun berechnen, wie viele Sekunden Ihr Geburtstag noch entfernt ist.
Um die gesamte Zeitdifferenz in Sekunden zu berechnen, verwenden Sie die Methode total_seconds()
des timedelta-Objekts
time_diff
.
tsecs = time_diff.total_seconds()
print(f "Ihr Geburtstag ist in {Sekunden} Sekunden.")
# Ausgabe
Ihr Geburtstag ist 19017960.127416 Sekunden entfernt.
Nun, das ist eine zu lange Wartezeit!
Nun wissen Sie, wie Sie die Zeitdifferenz zwischen zwei beliebigen Zeitstempeln in Sekunden berechnen können.
Lassen Sie uns nun einige Grundlagen wieder aufgreifen und Folgendes notieren. Ein Tag besteht aus 24 Stunden, eine Stunde ist 60 Minuten lang, und 60 Sekunden sind eine Minute.
Dies ist in der folgenden Abbildung zusammengefasst:
Um also von Sekunden in Minuten, Stunden und Tage umzurechnen, können Sie die folgende Tabelle verwenden und durch den entsprechenden Umrechnungsfaktor dividieren.
In den nächsten Abschnitten werden wir die Zeitdifferenz in Sekunden in Minuten und Stunden umrechnen.
Wie man den Zeitunterschied in Minuten ermittelt
Um die Zeitdifferenz in Minuten zu erhalten, müssen Sie nur die Gesamtsekunden durch 60 teilen.
Teilen Sie tsecs
durch 60 und speichern Sie das Ergebnis in einer Variablen namens tmins
, etwa so
tmins = tsecs/60
print(f "Ihr Geburtstag ist noch {tmins} Minuten entfernt.")
# Ausgabe
Ihr Geburtstag ist in 316966.0021236 Minuten.
Wie man den Zeitunterschied in Stunden ermittelt
Nachdem Sie nun die Zeitdifferenz in Minuten berechnet haben, können Sie diese durch den Faktor 60 teilen, um die Differenz in Stunden zu erhalten. Oder Sie können die Gesamtsekunden durch 60*60 = 3600 teilen.
thrs = tsecs/(60*60)
print(f "Ihr Geburtstag ist in {thrs} Stunden.")
# Ausgabe
Ihr Geburtstag ist in 5282.76670206 Stunden.
Sie haben nun gelernt, wie Sie die Zeitdifferenz in einer beliebigen Einheit Ihrer Wahl berechnen können.
Schlussfolgerung
In diesem Lernprogramm haben Sie gelernt, wie man:
- mit dem
datetime-Modul
von Python Datums- und Zeitangaben erstellen und bearbeiten können, timedelta-Objekte
verwenden, um eine Zeitspanne oder eine Zeitdifferenz zu erhalten, und- die Zeitdifferenz in Sekunden, Minuten und Stunden zu berechnen.
Ich hoffe, Sie fanden dieses Tutorial hilfreich. Jetzt, da Sie alles über die Berechnung von Zeitdifferenzen in Python wissen, ist es an der Zeit, Ihre Kenntnisse in die Praxis umzusetzen.
Viel Spaß beim Lernen und Programmieren!
Lernen Sie hier, wie man gleich oder ungleich Code schreibt oder ein Schlangenspiel in Python erstellt.