Datetime subtrahieren in Python

Rayven Esplanada 18 Oktober 2021
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.

Rayven Esplanada avatar Rayven Esplanada avatar

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

Verwandter Artikel - Python DateTime