Datetime subtrahieren in Python
In diesem Tutorial wird vorgestellt, wie man eine datetime-Subtraktion in Python durchführt.
Wir werden verschiedene Ausgaben nach der Subtraktion untersuchen, wie z. B. die Ausgabe der Anzahl von Sekunden, Minuten, Stunden oder Jahren der Differenz der beiden angegebenen datetime-Objekte.
Verwenden Sie das Modul datetime
, um Datetime in Python zu subtrahieren
datetime
ist ein Modul in Python, das Funktionen unterstützt, die das datetime
-Objekt manipulieren.
Die Initialisierung eines datetime
-Objekts nimmt drei erforderliche Parameter als datetime.datetime(year, month, day)
entgegen. Es akzeptiert auch optionale Parameter in Form von Stunden, Minuten, Sekunden, Mikrosekunden und Zeitzone.
datetime
hat auch die Funktion now()
, die das aktuelle Datum und die aktuelle Uhrzeit in das Objekt initialisiert.
Die Subtraktion zweier datetime-Objekte gibt die Differenz der Anzahl der Tage und die Zeitdifferenz zurück, falls es eine gibt.
from datetime import datetime
then = datetime(1987, 12, 30, 17, 50, 14) # yr, mo, day, hr, min, sec
now = datetime(2020, 12, 25, 23, 13, 0)
print(now - then)
Ausgabe:
12055 days, 5:10:00
Das Ergebnis bedeutet, dass die beiden Datumsangaben 12055 Tage und 5 Stunden und 10 Minuten voneinander entfernt sind.
Um dieses Ergebnis in andere Formate umzuwandeln, müssten wir zunächst das timedelta
in Sekunden umrechnen. Das datetime-Objekt hat eine eingebaute Methode datetime.total_seconds()
, die das Objekt in die darin enthaltenen Gesamtsekunden umwandelt.
Hier ist der vollständige Quellcode für die Subtraktion von datetime unter Verwendung des Moduls datetime
und seiner Funktionen.
from datetime import datetime
def getDifference(then, now=datetime.now(), interval="secs"):
duration = now - then
duration_in_s = duration.total_seconds()
# Date and Time constants
yr_ct = 365 * 24 * 60 * 60 # 31536000
day_ct = 24 * 60 * 60 # 86400
hour_ct = 60 * 60 # 3600
minute_ct = 60
def yrs():
return divmod(duration_in_s, yr_ct)[0]
def days():
return divmod(duration_in_s, day_ct)[0]
def hrs():
return divmod(duration_in_s, hour_ct)[0]
def mins():
return divmod(duration_in_s, minute_ct)[0]
def secs():
return duration_in_s
return {
"yrs": int(yrs()),
"days": int(days()),
"hrs": int(hrs()),
"mins": int(mins()),
"secs": int(secs()),
}[interval]
then = datetime(1987, 12, 30, 17, 50, 14) # yr, mo, day, hr, min, sec
now = datetime(2020, 12, 25, 23, 13, 0)
print("The difference in seconds:", getDifference(then, now, "secs"))
print("The difference in minutes:", getDifference(then, now, "mins"))
print("The difference in hours:", getDifference(then, now, "hrs"))
print("The difference in days:", getDifference(then, now, "days"))
print("The difference in years:", getDifference(then, now, "yrs"))
Das erste, was der Code macht, ist, 2 separate Datumsangaben für die Subtraktion zu initialisieren und die Funktion mehrmals mit jeweils unterschiedlichen Ausgaben aufzurufen. Im Fall von all
wird eine Ausgabe zurückgegeben, die die Differenz auf der Basis aller Fälle von Jahren bis Sekunden erhält.
Die Funktion divmod()
akzeptiert zwei Zahlen als Dividend und Divisor und gibt ein Tupel des Quotienten und des Rests zwischen ihnen zurück. Es wird nur der Quotient benötigt, deshalb wird im Code nur der Index 0
verwendet.
Ausgabe:
The difference in seconds: 1041052966
The difference in minutes: 17350882
The difference in hours: 289181
The difference in days: 12049
The difference in years: 33
Jetzt haben wir die Differenz zwischen zwei datetime-Objekten innerhalb verschiedener Zeiträume.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn