Finden Sie den letzten Tag des Monats mit Python

Jay Shaw 10 Oktober 2023
  1. Finden Sie den letzten Tag des Monats mithilfe der Kalenderbibliothek in Python
  2. Finden Sie den letzten Tag des Monats mit dem DateTime-Modul in Python
  3. Finden Sie den letzten Tag des Monats mit der Pfeilbibliothek
  4. Finden Sie den letzten Tag des Monats mit dem Pandas-Modul
  5. Abschluss
Finden Sie den letzten Tag des Monats mit Python

Es kann schwierig sein, sich an den letzten Tag eines jeden Monats zu erinnern und sich dessen sicher zu sein. Haben Sie jemals darüber nachgedacht, dass es ein Computerprogramm geben sollte, das Ihnen mit ein paar Zeilen Code den letzten Tag eines beliebigen Monats eines beliebigen Jahres anzeigt?

In diesem Artikel erfahren Sie, wie Sie Python-Programme erstellen, mit denen wir den letzten Tag des Monats mithilfe von Standard-Python-Bibliotheken leicht finden können. Wir werden eingebaute Bibliotheken wie calendar und datetime und einige Bibliotheken von Drittanbietern wie pandas und arrow verwenden, um den letzten Tag des Monats in Python zu finden.

Finden Sie den letzten Tag des Monats mithilfe der Kalenderbibliothek in Python

In diesem Abschnitt werden wir die eingebaute Python-Bibliothek calendar verwenden, um den letzten Tag des Monats zu finden.

Dieses Programm verwendet die calendar-Unterfunktion monthrange, die zwei Parameterargumente, year und month, entgegennimmt und einen Schlüsselpaarwert von (week_day_of_first_day, number_of_days) zurückgibt.

Der erste Wert gibt den ersten Wochentag des Monats an (0 ist Montag und 6 ist Sonntag), während der zweite Wert den letzten Tag des Monats angibt.

import calendar

last_day = calendar.monthrange(2000, 1)
print(last_day)

Der Januar hat 31 Tage, und im Jahr 2000 war der erste Tag ein Samstag.

Ausgang:

"C:\Users\Win 10\venv\Scripts\python.exe" "C:/Users/Win 10/main.py"
(5, 31)

Process finished with exit code 0

Lassen Sie uns das Programm überprüfen, indem wir einige Schaltjahre als Eingabe angeben, um zu sehen, ob es den letzten Tag des Monats in Python richtig findet.

import calendar

last_day1 = calendar.monthrange(2000, 2)
print(last_day1)

last_day2 = calendar.monthrange(2004, 2)
print(last_day2)

Die Schaltjahre werden entsprechend angezeigt.

Ausgang:

"C:\Users\Win 10\venv\Scripts\python.exe" "C:/Users/Win 10/main.py"
(1, 29)
(6, 29)

Process finished with exit code 0

Finden Sie den letzten Tag des Monats mit dem DateTime-Modul in Python

Die datetime-Bibliothek ist auch eine eingebaute Bibliothek, die verwendet wird, um den letzten Tag des Monats in Python zu finden.

Subtrahiere einen Tag vom ersten Tag jedes Monats, um den letzten Tag des Monats zu finden

Dieses Programm findet den letzten Tag des Monats, wenn Monat und Jahr als Eingabe bereitgestellt werden.

import datetime

year = 2001
month = 2

v = datetime.date(year + int(month / 12), (month % 12) + 1, 1) - datetime.timedelta(
    days=1
)

print(v)

Lassen Sie uns den Code aufschlüsseln:

Die erste Zeile importiert die datetime-Bibliothek. Zwei Variablen, Jahr und Monat, werden erstellt, die Eingaben für das Jahr und den Monat entgegennehmen. Die Unterfunktion datetime.date() nimmt drei Werte innerhalb des Parameters als Datum.

Dieses Programm verwendet die Logik, dass wir vom ersten Tag des Monats einen Tag zurückgehen und uns zum letzten Tag des vorherigen Monats bringen. Dies gibt uns den letzten Tag aller Monate außer Dezember, was uns zum letzten Tag des Vorjahres bringt.

Das Programm fügt dem Jahr für Dezember eine 1 hinzu, um dieses Problem mit der Zeile zu bekämpfen:

datetime.date(year + int(month / 12))

In ähnlicher Weise fügt das Programm für den Monat, wenn es Dezember ist, eine 1 zum Modul von Monat % 12 hinzu.

Dadurch wird der Monat auf 1 gesetzt, was die gleiche Anzahl von Tagen wie 12 hat, ohne das aktuelle Jahr zu ändern. Zuletzt wird mit der Funktion datetime.timedelta(days=1) ein Tag vom aktuellen Datum abgezogen.

Ausgang:

"C:\Users\Win 10\venv\Scripts\python.exe" "C:/Users/Win 10/main.py"
2001-02-28

Process finished with exit code 0

Eine andere Möglichkeit, dies mit der Bibliothek datetime zu tun, besteht darin, eine Methode zu erstellen und zwei Werte davon zurückzugeben, einen für Dezember und den anderen für die restlichen Monate. Sehen wir uns das Programm unten an.

import datetime


def last_day_of_month(date):
    if date.month == 12:
        return date.replace(day=31)
    return date.replace(month=date.month + 1, day=1) - datetime.timedelta(days=1)


print(last_day_of_month(datetime.date(2022, 10, 25)))

Eine Methode last_day_of_month wird mit einem Parameter date erstellt. Innerhalb der if-Anweisung wird mit date.month == 12 geprüft, ob der Monat Dezember ist.

Wenn die Bedingung wahr ist, wird der Tag durch date.replace(day=31) ersetzt. Andernfalls wird das Datum durch den ersten Tag und den nächsten Monat ersetzt, indem Monat=Datum.Monat + 1 erhöht wird, dann wird ein Tag davon abgezogen, wodurch das Datum auf das letzte Datum des angegebenen Monats gebracht wird.

Ein Beispiel ist unten angegeben:

return date.replace(month=date.month + 1, day=1) - datetime.timedelta(days=1)

Zuletzt wird die Methode durch Übergabe eines Datums datetime.date() aufgerufen und dann ausgegeben. Es bietet eine einfachere Lösung als das vorherige Beispiel.

Ausgang:

"C:\Users\Win 10\venv\Scripts\python.exe" "C:/Users/Win 10/main.py"
2022-10-31

Process finished with exit code 0

Verwenden Sie vorab geladene Daten, die in einem Array gespeichert sind, indem Sie eine for-Schleife verwenden, um den letzten Tag des Monats zu finden

Ein weiteres Beispiel für die Verwendung der datetime-Bibliothek besteht darin, ein Array der letzten Tage des Monats zu erstellen, es in einer Schleife auszuführen und die datetime-Bibliothek die ungültigen Daten herausfiltern zu lassen.

Siehe Beispielcode unten.

from datetime import datetime


def find_last_day(year, month):
    end_days = [31, 30, 29, 28, 27]
    for i in end_days:
        try:
            date = datetime(year, month, i)
        except ValueError:
            continue
        else:
            return date.date()
    return None


print(find_last_day(2020, 2))

Das Programm verwendet eine Methode find_last_day() mit zwei Parametern, year und month. In einem Array end_days werden die letzten paar möglichen Tage gespeichert.

Es wird eine for-Schleife erstellt, die für die Anzahl der Elemente in end_days läuft. Innerhalb eines try-Blocks speichert eine Variable das Datum unter Verwendung der datetime()-Unterfunktion.

Der Wert von Monat und Jahr wird per Parameter eingestellt und im Tageswert wird i gespeichert.

Innerhalb des except-Blocks wird eine Bedingung für ValueError angegeben, die den i-Wert in der Variable date bei einem ungültigen Monatswert verwirft. Dann wird die Schleife mit continue erneut durchlaufen.

Die Methode gibt das date innerhalb eines else-Blocks zurück, wenn ein gültiger Wert gefunden wird. Zuletzt wird return None verwendet, damit die Methode keinen anderen Wert zurückgibt.

Das Programm sucht aus dem gegebenen Array nach dem passenden Wert von day. Für Dezember findet die Schleife 31 und gibt den Wert zurück; für Monate wie November ist nur 30 möglich, also kehrt es an diesem Tag zurück.

Ebenso können der 31. und 30. Februar nicht möglich sein, also läuft die Schleife darüber. Wenn das angegebene Jahr ein Schaltjahr ist, wird 29 von der Schleife zurückgegeben; andernfalls wird 28 zurückgegeben.

Zuletzt wird die Methode aufgerufen, indem der Monat Februar und das Jahr 2020 übergeben werden.

Ausgang:

"C:\Users\Win 10\venv\Scripts\python.exe" "C:/Users/Win 10/main.py"
2020-02-29

Process finished with exit code 0

Wie wir sehen können, war der Februar 2020 ein Schaltjahr.

Drucken Sie den letzten Tag aller Monate eines Kalenderjahres, um den letzten Tag des Monats zu finden

Die Bibliothek datetime kann auch verwendet werden, um den letzten Tag aller Monate in Python in einem Kalenderjahr zu finden und alle zu drucken. Schauen wir uns das Programm an.

import datetime


def month_end(date):

    next_month = date.replace(day=28) + datetime.timedelta(days=4)

    return next_month - datetime.timedelta(days=next_month.day)


for month in range(1, 13):
    print(month_end(datetime.date(2022, month, 1)))

Lassen Sie uns den Code aufschlüsseln:

Eine Methode month_end wird erstellt, die einen Parameter date akzeptiert. Innerhalb dieser Methode nimmt eine Variable next_month das date und ersetzt den Tag mit date.replace(day=28) durch 28, da jeder Monat mindestens 28 Tage hat.

Nachdem der Wert ersetzt wurde, werden 4 Tage zu diesem Wert addiert, um das Datum auf den ersten oder zweiten Tag des nächsten Monats zu verschieben, je nach Anzahl der Tage im Vormonat.

Angenommen, das aktuelle Datum ist 2000, 3, 4 und der Tageswert für diesen Monat ist 4. Subtrahiert man diesen Tageswert vom Datum, erhält man den letzten Tag des Vormonats – 2000, 2, 28; diese Logik wird hier in diesem Programm verwendet.

Der Tag in der Variable next_month wird von sich selbst subtrahiert und von der Methode mit folgender Syntax zurückgegeben:

return next_month - datetime.timedelta(days=next_month.day)

Wir haben eine for-Schleife erstellt, die die Instanz month verwendet, um eine Schleife in einem Bereich von (1,13) auszuführen. Innerhalb der Schleife wird die Methode month_end aufgerufen, indem datetime.date übergeben wird und die Methode mit Jahr und Tag versorgt wird.

Der Monat wird durch die Instanz Monat ersetzt, die innerhalb der for-Schleife verwendet wird, um 12 Monate an die Methode zu übergeben.

for month in range(1, 13):
    print(month_end(datetime.date(2022, month, 1)))

Ausgang:

"C:\Users\Win 10\venv\Scripts\python.exe" "C:/Users/Win 10/main.py"
2022-01-31
2022-02-28
2022-03-31
2022-04-30
2022-05-31
2022-06-30
2022-07-31
2022-08-31
2022-09-30
2022-10-31
2022-11-30
2022-12-31

Process finished with exit code 0

In der Ausgabe werden alle letzten Tage eines Kalenderjahres angezeigt.

Finden Sie den letzten Tag des Monats mit der Pfeilbibliothek

Dies ist eine Python-Bibliothek eines Drittanbieters, die zur Datumsmanipulation verwendet werden kann. Es wird verwendet, um den letzten Tag des Monats in Python zu finden.

Das Programm verwendet die Arrow-Unterfunktion utcnow(), um die aktuelle Weltzeit zu erhalten. Es findet die Obergrenze des Monats mit ceil('month').date.

import arrow

print(arrow.utcnow().ceil("month").date())

Ausgang:

"C:\Users\Win 10\venv\Scripts\python.exe" "C:/Users/Win 10/main.py"
2022-10-31

Process finished with exit code 0

Der Code gibt das letzte Datum des aktuellen Monats an.

Finden Sie den letzten Tag des Monats mit dem Pandas-Modul

Dieser Abschnitt verwendet eine Drittanbieter-Python-Bibliothek, Pandas, um den letzten Tag des Monats zu finden. Hier importiert das Programm zwei Bibliothekspakete - datetime und pandas.

Es wird eine Methode check_month_end erstellt, die einen Parameter date entgegennimmt. Diese Methode nimmt den Parameter date und addiert die verbleibenden Tage dieses Monats mit date + pd.offsets.MonthEnd(0).

Unten ist der Beispielcode:

from datetime import datetime

import pandas as pd


def check_month_end(date):
    return date + pd.offsets.MonthEnd(0)


print(check_month_end(datetime(2005, 2, 6)))

print(check_month_end(datetime(2004, 2, 29)))

Ausgang:

"C:\Users\Win 10\venv\Scripts\python.exe" "C:/Users/Win 10/main.py"
2005-02-28 00:00:00
2004-02-29 00:00:00

Process finished with exit code 0

Die Ausgabe erfolgt in einem Pandas-Zeitstempelformat und zeigt den letzten Tag des Monats an.

Überprüfen Sie mit Pandas, ob ein Tag der letzte Tag des Monats ist

Pandas können verwendet werden, um zu überprüfen, ob ein bestimmtes Datum der letzte Tag des Monats ist. Im Gegensatz zu den wenigen vorherigen Programmen nimmt dieses Benutzereingaben entgegen und prüft, ob der angegebene Tag gültig ist oder nicht.

Das Programm überprüft anhand des Parameterwerts, ob er mit date + pd.offsets.MonthEnd(0) == date mit dem Monatsende übereinstimmt. Die Methode gibt beim Aufruf boolesche Werte zurück.

Sehen Sie sich den bereitgestellten Beispielcode an.

from datetime import datetime

import pandas as pd


def check_month_end(date):
    return date + pd.offsets.MonthEnd(0) == date


print(check_month_end(datetime(1996, 5, 16)))
print(check_month_end(datetime(1996, 5, 31)))

Ausgang:

"C:\Users\Win 10\venv\Scripts\python.exe" "C:/Users/Win 10/main.py"
False
True

Process finished with exit code 0

Abschluss

In diesem Artikel haben wir die verschiedenen Möglichkeiten kennengelernt, den letzten Tag des Monats in Python zu finden, indem wir eingebaute Bibliotheken wie datetime und calendar sowie Bibliotheken von Drittanbietern wie arrow und pandas verwenden.

Verwandter Artikel - Python DateTime