Module Calendar Python : Guide Expert avec Exemples de Code
Le module intégré calendar de Python offre des outils puissants pour travailler avec dates, mois et années. En tirant parti de classes comme TextCalendar et HTMLCalendar, les développeurs peuvent créer des calendriers imprimables ou web-friendly, itérer sur les jours, et même calculer des règles de planification personnalisées.
Ci-dessous, une visite pas à pas des cas d'usage les plus courants, complète avec extraits de code prêts à l'emploi pour Python 2 et Python 3.
Étape 1 — Générer un Calendrier Texte
Exécutez le script suivant pour voir un calendrier en texte brut pour janvier 2025, commençant la semaine le jeudi :

- Ligne 1 :
import calendarcharge le module. - Ligne 3 :
c = calendar.TextCalendar(calendar.THURSDAY)crée un objet calendrier dont les semaines commencent le jeudi. - Ligne 4 :
txt = c.formatmonth(2025, 1)formate le mois de janvier 2025. - Ligne 5 :
print(txt)affiche le calendrier.
Changez le jour de début à dimanche pour vérifier la flexibilité :

Étape 2 — Rendre un Calendrier HTML
Pour les applications web, HTMLCalendar peut générer un tableau HTML complet stylisable avec CSS :

Étape 3 — Itérer sur les Jours d'un Mois
La méthode itermonthdays renvoie tous les jours du mois, y compris des zéros de padding pour les jours appartenant aux mois adjacents. C'est utile pour aligner les calendriers :

- Les zéros indiquent les cases hors du mois cible.
- Ils aident à déterminer sur quelle semaine le mois commence et finit.
Étape 4 — Récupérer des Noms Sensibles à la Locale
Python honore automatiquement la locale du système pour les noms de mois et jours. Ci-dessous un exemple de sortie pour calendar.month_name et calendar.day_name :

Les paramètres de locale varient par machine, donc les résultats peuvent différer pour utilisateurs d'autres pays.
Étape 5 — Calculer des Dates Personnalisées (ex: Premier Lundi de Chaque Mois)
Voici un script concis qui trouve le premier lundi de chaque mois en 2025 :

La logique utilise calendar.monthcalendar pour obtenir une matrice de semaines, puis vérifie les deux premières semaines pour une valeur de lundi non-nulle.
Exemple Python 2
import calendar
# Créer un calendrier texte simple
c = calendar.TextCalendar(calendar.THURSDAY)
text = c.formatmonth(2025, 1)
print text
# Créer un calendrier formaté HTML
hc = calendar.HTMLCalendar(calendar.THURSDAY)
html = hc.formatmonth(2025, 1)
print html
# Boucler sur les jours d'un mois
for i in c.itermonthdays(2025, 4):
print i
# Noms de mois et jours sensibles à la locale
for name in calendar.month_name:
print name
for day in calendar.day_name:
print day
# Trouver le premier lundi de chaque mois
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)
Exemple Python 3
import calendar
# Créer un calendrier texte simple
c = calendar.TextCalendar(calendar.THURSDAY)
text = c.formatmonth(2025, 1)
print(text)
# Créer un calendrier formaté HTML
hc = calendar.HTMLCalendar(calendar.THURSDAY)
html = hc.formatmonth(2025, 1)
print(html)
# Boucler sur les jours d'un mois
for i in c.itermonthdays(2025, 4):
print(i)
# Noms de mois et jours sensibles à la locale
for name in calendar.month_name:
print(name)
for day in calendar.day_name:
print(day)
# Trouver le premier lundi de chaque mois
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))
À Retenir
- Personnalisez les jours de début de semaine et formats avec
TextCalendaretHTMLCalendar. - Utilisez
itermonthdayspour des layouts de calendrier précis, gérant les zéros de padding. - Les données de locale sont automatiquement disponibles via
calendar.month_nameetcalendar.day_name. - Calculez des dates basées sur règles (ex: premier lundi) avec
calendar.monthcalendaret logique simple.
Python
- Maîtriser la méthode strip() de Python : Guide complet et exemples pratiques
- Maîtriser str.count() de Python : Compter caractères et sous-chaînes avec exemples
- Fonction Python round() expliquée avec exemples pratiques
- Maîtriser la fonction Python map() : syntaxe, exemples et bonnes pratiques
- Python timeit() : mesurer le temps d'exécution avec exemples pratiques
- Maîtriser yield en Python : générateur vs return – Guide pratique
- Python Counter dans collections : comptage efficace, mise à jour et opérations arithmétiques
- Python list.count() : Guide Expert avec Exemples Pratiques
- Python list.index() : Comment Trouver les Positions d'Éléments avec Exemples Pratiques