Python Modul kalendáře s příkladem

⚡ Chytré shrnutí

Modul kalendáře v Python Generuje textové a HTML kalendáře pomocí tříd TextCalendar a HTMLCalendar. Provádí výpočty data na základě dne, měsíce a roku a umožňuje vám přizpůsobit počáteční den v týdnu pro libovolný měsíc.

  • 🔘 Dva typy kalendářů: Třídy TextCalendar a HTMLCalendar vytvářejí kalendáře v prostém textu a webové kalendáře pro vybraný měsíc nebo rok.
  • ☑️ První všední den: Konstanty jako calendar.SUNDAY a metoda setfirstweekday() mění, kterým dnem v týdnu začíná každý týden.
  • (Tj. Iterovat dny: Metoda itermonthdays() prochází měsíc a značky se překrývají.ping dny ze sousedních měsíců jako nuly.
  • 🧪 Pomocné funkce: Funkce jako isleap(), weekday() a monthrange() odpovídají na běžné otázky týkající se data bez nutnosti použití jakékoli další knihovny.
  • 🛠️ Standardní knihovna: Modul kalendáře je dodáván s Python, takže před importem a použitím nevyžaduje žádnou instalaci.
  • 🤖 Pracovní postupy umělé inteligence: Kanály strojového učení odvozují funkce kalendáře, jako jsou příznaky dnů v týdnu a přestupných let, pro předpovídání časových řad.

Python Modul kalendáře

Jedno kalendářový modul v Python má třídu kalendáře, která umožňuje výpočty pro různé úkoly na základě data, měsíce a roku. Navíc Textový kalendář a HTMLKalendář třídy v Python vám umožníme upravovat kalendář a používat ho podle vašich požadavků. Podívejme se, co s ním můžeme dělat. Python kalendář.

V čem je modul kalendáře? Python?

Jedno kalendářový modul je součástí Python standardní knihovna, takže je k dispozici bez jakékoli instalace. Seskupuje několik tříd a pomocných funkcí, které vytvářejí kalendáře a odpovídají na běžné otázky týkající se data, například na který den v týdnu datum připadá nebo kolik dní měsíc obsahuje.

Modul nabízí pět hlavních tříd:

  • Kalendář je základní třída, která poskytuje data, ze kterých jsou sestaveny ostatní kalendáře.
  • Textový kalendář vytváří kalendáře v prostém textu na měsíc nebo celý rok.
  • HTMLKalendář vytváří kalendáře jako HTML tabulky pro webové stránky.
  • LokalitaTextKalendář je textový kalendář, který používá názvy dnů a měsíců zvoleného národního prostředí.
  • LokalitaHTMLKalendář je ekvivalent HTML, který respektuje zvolené locale.

Ve výchozím nastavení začíná kalendářní týden dnem Monday, v souladu s evropskou konvencí. První den můžete změnit pomocí konstanty, například calendar.SUNDAY, jak je znázorněno v níže uvedených příkladech.

Jak vytisknout textový kalendář v Python

Krok 1) Spusťte kód.

Vytiskněte textový kalendář v Python

  • Code Řádek č. 1: Začneme příkazem „import calendar“, který importuje všechny třídy tohoto modulu.
  • Code Řádek č. 3: c= calendar.TextCalendar(calendar.SUNDAY) říká interpretu, aby vytvořil textový kalendář. Začátek měsíce bude neděle. V Python, můžete kalendář formátovat podle libosti a změnit den, kterým měsíc začíná.
  • Code Řádek č. 4: str= c.formatmonth(2025,1) vytvoří kalendář pro rok 2025, měsíc 1 – leden.
  • Code Řádek č. 5: print str vypíše výstup.

Změňme rychle hodnotu z neděle na čtvrtek a podívejme se na výstup.

Změnit první den v týdnu Python kalendář

Jak vytisknout HTML kalendář v Python

Krok 2) Kalendář si také můžete vytisknout ve formátu HTML. Tato funkce je užitečná pro vývojáře, kteří chtějí změnit vzhled a dojem z kalendáře.

Vytiskněte HTML kalendář v Python

Jak smyčkou procházet dny v měsíci

Krok 3) Smyčky za počet dní v měsíci pomocí c.itermonthdays(2025,4); načte celkový počet dní v daném měsíci.

Smyčka přes dny v měsíci v Python

  • Když spustíte kód pro získání celkového počtu dní v konkrétním měsíci, například „duben“, ve výstupu získáte 30 dní, ale na začátku a někdy i na konci uvidíte spolu s těmito dny i nuly.
  • Nuly ve výstupu znamenají, že se den v týdnu překrývá.ping měsíc, což znamená, že do daného měsíce nepatří.
  • Tyto nuly se ve výstupu objevují, protože ve vašem kódu jste zmínili den (čtvrtek). Takže když zavoláte funkci „c.itermonthdays“, začne se počítat dny od čtvrtka a váš čtvrtek nemusí začínat 1. dubna – může to být 28. nebo 29. března. Kód tedy začne počítat dny od 28. března a všechny následující dny až do 1. dubna. Tyto dny se počítají jako nuly a ve výstupu tyto nuly uvidíte. Totéž platí pro konec měsíce.
  • Takže s výjimkou dat 1–30 se všechna data z předchozího i následujícího měsíce ve výstupu zobrazí jako nuly.

Jak načíst názvy měsíců a dnů v týdnu z lokálního systému

Krok 4) Data můžete načíst z lokálního systému, například měsíce nebo dny v týdnu.

Načíst názvy měsíců z lokálního systému v Python

  • Výstup ukazuje, že jsme z lokálního systému vytiskli názvy měsíců. Stejně tak můžete načíst i názvy dnů v týdnu, jak je znázorněno níže.
  • Výstup závisí na místním systému. Pokud je váš místní systém nastaven na jinou zemi, zobrazí se výstup podle místního nastavení dané země. Zde máme měsíce, takže to nebude mít žádný vliv, ale na týden nebo den se to určitě lišit bude.

Načíst názvy dnů v týdnu z lokálního systému v Python

Jak najít konkrétní den pro celý rok

Krok 5) Seznam konkrétního dne za celý rok si můžete vyhledat. Například auditní den je každého prvního Monday týdne. Předpokládejme, že chcete znát datum prvního Monday za každý měsíc. Můžete použít tento kód.

Najděte konkrétní den pro celý rok v Python

  • mycal = calendar.monthcalendar(2025, month) vytvoří kalendář pro daný měsíc.
  • Nastavte proměnné week1 a week2 na první a druhý týden kalendáře.
  • Zkontrolujte, zda 1. týden obsahuje Monday a stanovit den auditu.
  • Jinak nastavte den auditu jako první Monday ve 2. týdnu.
  • Výstup zobrazuje datum prvního Monday která spadá do toho měsíce.
  • Délka tohoto objektu Cal závisí na počtu týdnů v měsíci. V našem případě je to jeden nebo dva, protože první Monday v týdnu se nejčastěji vyskytuje v prvním týdnu, ale pokud ne, pak uvažujeme druhý týden. Podívejme se podrobněji, proč uvažujeme i druhý týden.
  • Zde používáme kalendářní konstantu MondayObjekt calendar vám poskytuje konstanty, které reprezentují neděli, Monday, úterý a tak dále. Pokud v prvním týdnu den reprezentovaný Monday konstanta se nerovná 0 – nezapomeňte, že nuly znamenají dny, které patří do jiného měsíce – pak to Monday patří do tohoto měsíce a den auditu je v prvním týdnu. Pokud je 0, pak první Monday není v prvním týdnu měsíce, takže musí být ve druhém.
  • V takovém případě nastavíme proměnnou den auditu na Monday reprezentovaný druhým týdnem. Den auditu se vrací s jakýmkoli dnem pro první nebo druhý týden.

Kompletní Python Kalendář Code Příklad

Zde je kompletní kód.

Python 2 Příklad

import calendar
# Create a plain text calendar
c = calendar.TextCalendar(calendar.THURSDAY)
str = c.formatmonth(2025, 1, 0, 0)
print str

# Create an HTML formatted calendar
hc = calendar.HTMLCalendar(calendar.THURSDAY)
str = hc.formatmonth(2025, 1)
print str
# loop over the days of a month
# zeroes indicate that the day of the week is in a next month or overlapping month
for i in c.itermonthdays(2025, 4):
    print i

    # The calendar can give info based on local such a names of days and months (full and abbreviated forms)
    for name in calendar.month_name:
        print name
    for day in calendar.day_name:
        print day
    # calculate days based on a rule: For instance an audit day on the second Monday of every month
    # Figure out what days that would be for each month, we can use the script as shown here
    for month in range(1, 13):
		# It retrieves a list of weeks that represent the month
        mycal = calendar.monthcalendar(2025, month)
		# The first MONDAY has to be within the first two weeks
        week1 = mycal[0]
        week2 = mycal[1]
        if week1[calendar.MONDAY] != 0:
            auditday = week1[calendar.MONDAY]
        else:
        # if the first MONDAY isn't in the first week, it must be in the second week
        	auditday = week2[calendar.MONDAY]
print "%10s %2d" % (calendar.month_name[month], auditday)

Python 3 Příklad

import calendar
# Create a plain text calendar
c = calendar.TextCalendar(calendar.THURSDAY)
str = c.formatmonth(2025, 1, 0, 0)
print(str)

# Create an HTML formatted calendar
hc = calendar.HTMLCalendar(calendar.THURSDAY)
str = hc.formatmonth(2025, 1)
print(str)
# loop over the days of a month
# zeroes indicate that the day of the week is in a next month or overlapping month
for i in c.itermonthdays(2025, 4):
    print(i)

    # The calendar can give info based on local such a names of days and months (full and abbreviated forms)
    for name in calendar.month_name:
        print(name)
    for day in calendar.day_name:
        print(day)
    # calculate days based on a rule: For instance an audit day on the second Monday of every month
    # Figure out what days that would be for each month, we can use the script as shown here
    for month in range(1, 13):
		# It retrieves a list of weeks that represent the month
        mycal = calendar.monthcalendar(2025, month)
		# The first MONDAY has to be within the first two weeks
        week1 = mycal[0]
        week2 = mycal[1]
        if week1[calendar.MONDAY] != 0:
            auditday = week1[calendar.MONDAY]
        else:
        # if the first MONDAY isn't in the first week, it must be in the second week
        	auditday = week2[calendar.MONDAY]
print("%10s %2d" % (calendar.month_name[month], auditday))

Užitečné funkce v Python Modul kalendáře

Kromě výše uvedeného návodu obsahuje modul kalendáře několik užitečných funkcí, které fungují bez nutnosti vytváření instance třídy:

  • kalendář.kalendář(rok) vrací celoroční kalendář jako víceřádkový řetězec, zatímco calendar.prcal(rok) vytiskne to přímo.
  • kalendář.měsíc(rok, měsíc) vrací jeden měsíc jako text a calendar.prmonth(rok, měsíc) vytiskne to.
  • kalendář.měsíckalendář(rok, měsíc) vrací měsíc jako seznam řádků týdne, kde každý den je celé číslo a dny mimo měsíc jsou 0.

Tyto funkce umožňují rychlý, jednořádkový výstup kalendáře, což je výhodné ve skriptech a interaktivních relacích, kde nepotřebujete dodatečnou kontrolu nad třídami TextCalendar nebo HTMLCalendar.

Jak zkontrolovat přestupný rok Python

Modul kalendáře vám také může sdělit, zda je rok přestupný, což je důležité, protože únor má v takových letech 29 dní místo 28. O to se starají dvě funkce:

  • calendar.isleep(rok) Vrací hodnotu True, pokud je rok přestupný, a hodnotu False v opačném případě.
  • calendar.leapdays(y1, y2) vrací počet přestupných let v rozsahu od y1 do y2, ale bez něj.

Například calendar.isleap(2024) vrací True, zatímco calendar.isleap(2025) vrací False. Kontroly přestupných let jsou užitečné vždy, když ověřujete data, plánujete opakující se události nebo počítáte přesný počet dní mezi dvěma lety.

Nejčastější dotazy

Modul calendar se zaměřuje na tvorbu a analýzu kalendářů – textových, HTML, čísel dnů v týdnu a kontrol přestupných roků. Modul datetime zpracovává specifická časová razítka, aritmetiku a formátování jednotlivých dat a časů. Mnoho programů importuje obojí a používá je společně.

Zavolejte calendar.weekday(rok, měsíc, den). Vrátí celé číslo od 0 (Monday) na 6 (neděle). Spárujte to s calendar.day_name pro převod tohoto čísla na čitelný popisek, například Monday nebo pátek.

Použijte calendar.monthrange(rok, měsíc). Vrací n-tici, jejíž druhá hodnota je počet dní, takže calendar.monthrange(2025, 2)[1] vrací 28. První hodnota je den v týdnu prvního dne daného měsíce.

Použijte calendar.LocaleTextCalendar nebo calendar.LocaleHTMLCalendar a předejte mu locale, například „fr_FR“. Naformátovaný měsíc pak vypíše názvy dnů v týdnu a měsíců v daném jazyce, za předpokladu, že je locale nainstalován v operačním systému.

Vygenerujte kód značky pomocí HTMLCalendar().formatmonth(2025, 1), poté otevřete soubor v režimu zápisu a zavolejte write() s tímto řetězcem. Uložení s příponou .html umožní zobrazení stylizovaného kalendáře v libovolném prohlížeči.

Ve výchozím nastavení týden začíná dnem Monday, v souladu s evropskou konvencí. Voláním metody calendar.setfirstweekday(calendar.SUNDAY) nebo předáním konstanty, například calendar.SUNDAY, do objektu TextCalendar nastavíte začátek týdne na jiný den.

Datové kanály používají kalendářní funkce k odvození funkcí, jako jsou dny v týdnu, čísla týdne a příznaky přestupného roku, z nezpracovaných dat. Tyto navržené kalendářní funkce pomáhají modelům strojového učení zachytit týdenní a sezónní vzorce v předpovědích časových řad.

Ano. GitHub Copilot a agentní AI asistenti mohou z krátkého komentáře psát úryvky modulů kalendáře – vypisovat měsíce, kontrolovat přestupné roky nebo vytvářet HTML kalendář. Revzobrazit výstup, protože indexování dnů v týdnu a nastavení prvního dne se snadno zaměňují.

Shrňte tento příspěvek takto: