Python Calendar Modul: Experten-Guide mit Code-Beispielen
Pythons eingebautes calendar-Modul bietet mächtige Tools für die Arbeit mit Daten, Monaten und Jahren. Durch Nutzung von Klassen wie TextCalendar und HTMLCalendar können Entwickler druckbare oder web-freundliche Kalender erstellen, durch Tage iterieren und sogar benutzerdefinierte Scheduling-Regeln berechnen.
Nachfolgend eine Schritt-für-Schritt-Anleitung der häufigsten Use Cases, komplett mit lauffähigen Code-Snippets für Python 2 und Python 3.
Schritt 1 – Text-Kalender generieren
Führen Sie folgendes Skript aus, um einen Plain-Text-Kalender für Januar 2025 zu sehen, der die Woche am Donnerstag beginnen lässt:
- Zeile 1:
import calendarlädt das Modul. - Zeile 3:
c = calendar.TextCalendar(calendar.THURSDAY)erstellt ein Kalenderobjekt, dessen Wochen am Donnerstag beginnen. - Zeile 4:
txt = c.formatmonth(2025, 1)formatiert den Januar 2025. - Zeile 5:
print(txt)gibt den Kalender aus.
Starttag auf Sonntag ändern, um Flexibilität zu verifizieren:
Schritt 2 – HTML-Kalender rendern
Für Webanwendungen kann HTMLCalendar eine vollständige HTML-Tabelle generieren, die mit CSS gestylt werden kann:
Schritt 3 – Über Tage eines Monats iterieren
Die itermonthdays-Methode liefert alle Tage des Monats, inklusive Padding-Nullen für Tage, die zu angrenzenden Monaten gehören. Das ist nützlich für Kalender-Layouts:
- Nullen zeigen Slots an, die außerhalb des Zielmonats fallen.
- Sie helfen zu bestimmen, auf welcher Woche der Monat beginnt und endet.
Schritt 4 – Locale-bewusste Namen abrufen
Python berücksichtigt automatisch das System-Locale für Monats- und Wochentagnamen. Unten ein Beispiel-Output beim Drucken von calendar.month_name und calendar.day_name:
Locale-Einstellungen variieren je Maschine, daher können Ergebnisse für Nutzer in anderen Ländern abweichen.
Schritt 5 – Benutzerdefinierte Daten berechnen (z. B. erster Montag jedes Monats)
Unten ein prägnantes Skript, das den ersten Montag jedes Monats in 2025 findet:
Die Logik nutzt calendar.monthcalendar für eine Matrix der Wochen, dann prüft sie die ersten beiden Wochen auf einen non-zero Montag-Wert.
Python 2 Beispiel
import calendar
# Plain text calendar erstellen
c = calendar.TextCalendar(calendar.THURSDAY)
text = c.formatmonth(2025, 1)
print text
# HTML-formatierten Kalender erstellen
hc = calendar.HTMLCalendar(calendar.THURSDAY)
html = hc.formatmonth(2025, 1)
print html
# Über Tage eines Monats loopen
for i in c.itermonthdays(2025, 4):
print i
# Locale-bewusste Namen von Monaten und Tagen
for name in calendar.month_name:
print name
for day in calendar.day_name:
print day
# Ersten Montag jedes Monats finden
for month in range(1, 13):
mycal = calendar.monthcalendar(2025, month)
week1 = mycal[0]
week2 = mycal[1]
if week1[calendar.MONDAY] != 0:
auditday = week1[calendar.MONDAY]
else:
auditday = week2[calendar.MONDAY]
print "%10s %2d" % (calendar.month_name[month], auditday)
Python 3 Beispiel
import calendar
# Plain text calendar erstellen
c = calendar.TextCalendar(calendar.THURSDAY)
text = c.formatmonth(2025, 1)
print(text)
# HTML-formatierten Kalender erstellen
hc = calendar.HTMLCalendar(calendar.THURSDAY)
html = hc.formatmonth(2025, 1)
print(html)
# Über Tage eines Monats loopen
for i in c.itermonthdays(2025, 4):
print(i)
# Locale-bewusste Namen von Monaten und Tagen
for name in calendar.month_name:
print(name)
for day in calendar.day_name:
print(day)
# Ersten Montag jedes Monats finden
for month in range(1, 13):
mycal = calendar.monthcalendar(2025, month)
week1 = mycal[0]
week2 = mycal[1]
if week1[calendar.MONDAY] != 0:
auditday = week1[calendar.MONDAY]
else:
auditday = week2[calendar.MONDAY]
print("%10s %2d" % (calendar.month_name[month], auditday))
Zusammenfassung
- Wochentag-Start und Formate anpassen mit
TextCalendarundHTMLCalendar. itermonthdaysfür präzise Kalender-Layouts nutzen, Padding-Nullen handhaben.- Locale-Daten automatisch verfügbar via
calendar.month_nameundcalendar.day_name. - Regelbasierte Daten (z. B. erster Montag) berechnen mit
calendar.monthcalendarund simpler Logik.
Python
- C# Abstrakte Klassen: Praktisches Tutorial mit Code-Beispielen
- Pythons strip()-Methode meistern: Umfassender Leitfaden & Praxisbeispiele
- Pythons str.count(): Zeichen & Teilstrings zählen mit Beispielen
- Python round()-Funktion erklärt mit praktischen Beispielen
- Pythons map()-Funktion meistern: Syntax, Beispiele und Best Practices
- Python timeit(): Ausführungszeit messen mit praktischen Beispielen
- Pythons yield meistern: Generator vs. Return – Ein praktischer Leitfaden
- Python Counter in collections: Effizientes Zählen, Aktualisieren und arithmetische Operationen
- Python list.count(): Experten-Guide mit praktischen Beispielen
- Python list.index(): Element-Positionen finden mit praktischen Beispielen