Python Calendar Module: Expert Gids met Codevoorbeelden
Python's ingebouwde calendar module biedt krachtige tools voor het werken met datums, maanden en jaren. Door klassen zoals TextCalendar en HTMLCalendar te benutten, kunnen ontwikkelaars printbare of web-vriendelijke kalenders maken, door dagen itereren en zelfs aangepaste scheduling-regels berekenen.
Hieronder is een stap-voor-stap walkthrough van de meest voorkomende use cases, complete met klaar-om-te-draaien code-snippets voor zowel Python 2 als Python 3.
Stap 1 – Een Tekstkalender Genereren
Voer het volgende script uit om een platte-tekst kalender voor januari 2025 te zien, met de week beginnend op donderdag:

- Regel 1:
import calendarlaadt de module. - Regel 3:
c = calendar.TextCalendar(calendar.THURSDAY)maakt een kalender-object waarvan de weken op donderdag beginnen. - Regel 4:
txt = c.formatmonth(2025, 1)formatteert de maand januari 2025. - Regel 5:
print(txt)print de kalender.
Wijzig de startdag naar zondag om de flexibiliteit te verifiëren:

Stap 2 – Een HTML-kalender Renderen
Voor webapplicaties kan HTMLCalendar een volledige HTML-tabel genereren die met CSS gestyled kan worden:

Stap 3 – Itereren Over Dagen van een Maand
De itermonthdays methode levert alle dagen in de maand, inclusief padding-nullen voor dagen die tot aangrenzende maanden behoren. Dit is nuttig voor het uitlijnen van kalenders:

- Nullen duiden op slots die buiten de doelmaand vallen.
- Ze helpen bepalen op welke dag de maand begint en eindigt.
Stap 4 – Locale-aware Namen Ophalen
Python eert automatisch de systeem-locale voor maand- en dag-namen. Hieronder is een voorbeelduitvoer bij het printen van calendar.month_name en calendar.day_name:

Locale-instellingen verschillen per machine, dus resultaten kunnen verschillen voor gebruikers in andere landen.
Stap 5 – Aangepaste Datums Berekenen (bijv. Eerste Maandag van Elke Maand)
Hieronder is een beknopt script dat de eerste maandag van elke maand in 2025 vindt:

De logica gebruikt calendar.monthcalendar om een matrix van weken op te halen, en controleert dan de eerste twee weken op een non-zero maandag-waarde.
Python 2 Voorbeeld
import calendar
# Maak een platte-tekst kalender
c = calendar.TextCalendar(calendar.THURSDAY)
text = c.formatmonth(2025, 1)
print text
# Maak een HTML-geformatteerde kalender
hc = calendar.HTMLCalendar(calendar.THURSDAY)
html = hc.formatmonth(2025, 1)
print html
# Loop over de dagen van een maand
for i in c.itermonthdays(2025, 4):
print i
# Locale-aware namen van maanden en dagen
for name in calendar.month_name:
print name
for day in calendar.day_name:
print day
# Vind de eerste maandag van elke maand
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 Voorbeeld
import calendar
# Maak een platte-tekst kalender
c = calendar.TextCalendar(calendar.THURSDAY)
text = c.formatmonth(2025, 1)
print(text)
# Maak een HTML-geformatteerde kalender
hc = calendar.HTMLCalendar(calendar.THURSDAY)
html = hc.formatmonth(2025, 1)
print(html)
# Loop over de dagen van een maand
for i in c.itermonthdays(2025, 4):
print(i)
# Locale-aware namen van maanden en dagen
for name in calendar.month_name:
print(name)
for day in calendar.day_name:
print(day)
# Vind de eerste maandag van elke maand
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))
Kernboodschap
- Pas week-startdagen en formaten aan met
TextCalendarenHTMLCalendar. - Gebruik
itermonthdaysvoor nauwkeurige kalenderlayouts, met afhandeling van padding-nullen. - Locale-data is automatisch beschikbaar via
calendar.month_nameencalendar.day_name. - Bereken regel-gebaseerde datums (bijv. eerste maandag) met
calendar.monthcalendaren simpele logica.
Python
- C# Abstracte Classes: Een Praktische Tutorial met Codevoorbeelden
- Python's strip()-methode beheersen: Uitgebreide handleiding & praktische voorbeelden
- Python's str.count() beheersen: Karakters & substrings tellen met voorbeelden
- Python round()-functie uitgelegd met praktische voorbeelden
- Python's map()-functie beheersen: syntaxis, voorbeelden en best practices
- Python timeit() – Uitvoeringstijd meten met praktische voorbeelden
- Python's yield meesteren: Generator vs Return – Een praktische gids
- Python Counter in collections – Efficiënt tellen, updaten en rekenkundige operaties
- Python list.count(): Expert Gids met Praktische Voorbeelden
- Python List index() – Elementposities Vinden met Praktische Voorbeelden
- Python Extensieprogrammering met C: Snelle, Native Modules Bouwen