Python kalendermodul med exempel

⚡ Smart sammanfattning

Kalendermodulen i Python genererar text- och HTML-kalendrar med hjälp av klasserna TextCalendar och HTMLCalendar. Den utför datumberäkningar baserade på dag, månad och år, och låter dig anpassa startveckodagen för valfri månad.

  • 🔘 Två kalendertyper: Klasserna TextCalendar och HTMLCalendar producerar kalendrar i klartext och webbklara för en vald månad eller ett vald år.
  • ☑️ Första vardag: Konstanter som calendar.SUNDAY och metoden setfirstweekday() ändrar vilken dag varje vecka börjar på.
  • ✅ Upprepa dagar: Metoden itermonthdays() loopar över en månad och markerar överlappningping dagar från intilliggande månader som nollor.
  • 🧪 Hjälpfunktioner: Funktioner som isleap(), weekday() och monthrange() besvarar vanliga datumfrågor utan något extra bibliotek.
  • 🛠️ Standardbibliotek: Kalendermodulen levereras med Python, så den behöver ingen installation innan du importerar och använder den.
  • 🤖 AI-arbetsflöden: Maskininlärningspipeliner härleder kalenderfunktioner som veckodags- och skottårsflaggor för tidsserieprognoser.

Python Kalendermodul

Ocuco-landskapet kalendermodul i Python har en kalenderklass som möjliggör beräkningar för olika uppgifter baserat på datum, månad och år. Utöver det, Textkalender och HTMLKalender klasser i Python låter dig redigera kalendern och använda den efter dina behov. Låt oss se vad vi kan göra med den Python kalender.

Vad är kalendermodulen i Python?

Ocuco-landskapet kalendermodul är en del av Python standardbiblioteket, så det är tillgängligt utan någon installation. Det grupperar flera klasser och hjälpfunktioner som bygger kalendrar och svarar på vanliga datumfrågor, till exempel vilken veckodag ett datum infaller på eller hur många dagar en månad innehåller.

Modulen erbjuder fem huvudklasser:

  • Kalender är en basklass som tillhandahåller de data som de andra kalendrarna är byggda från.
  • Textkalender producerar kalendrar i klartext för en månad eller ett helt år.
  • HTMLKalender producerar kalendrar som HTML-tabeller för webbsidor.
  • SpråkTextKalender är en textkalender som använder dag- och månadsnamnen för en vald plats.
  • SpråkHTMLKalender är HTML-motsvarigheten som respekterar en vald språkinställning.

Som standard börjar en kalendervecka den Monday, enligt den europeiska konventionen. Du kan ändra den första dagen med en konstant som calendar.SUNDAY, som visas i exemplen nedan.

Hur man skriver ut en textkalender i Python

Steg 1) Kör koden.

Skriv ut en textkalender i Python

  • Code Rad #1: Vi börjar med "importera kalender", vilket importerar alla klasser i den här modulen.
  • Code Rad # 3: c= calendar.TextCalendar(calendar.SUNDAY) anger att tolken ska skapa en textkalender. Månadens början blir söndag. Python, kan du formatera kalendern som du vill och ändra vilken dag månaden börjar med.
  • Code Rad #4: str= c.formatmonth(2025,1) skapar en kalender för år 2025, månad 1 – januari.
  • Code Rad # 5: print str skriver ut resultatet.

Låt oss snabbt ändra värdet från söndag till torsdag och kontrollera utdata.

Ändra den första vardagen i en Python kalender

Hur man skriver ut en HTML-kalender i Python

Steg 2) Du kan också skriva ut kalendern i HTML-format. Den här funktionen är användbar för utvecklare som vill ändra utseendet och känslan på kalendern.

Skriv ut en HTML-kalender i Python

Hur man loopar över en månads dagar

Steg 3) Loops över dagarna i en månad med hjälp av c.itermonthdays (2025,4); den kommer att hämta det totala antalet dagar för den månaden.

Loopa över dagarna i en månad i Python

  • När du kör koden för att få det totala antalet dagar för en specifik månad, säg "april", får du 30 dagar i utdata, men du kommer också att se några nollor tillsammans med dessa dagar i början och ibland i slutet.
  • Nollor i utdata betyder att veckodagen överlappar varandra.ping månad, vilket betyder att den inte tillhör den månaden.
  • Dessa nollor visas i utdata eftersom du i din kod har nämnt en dag (torsdag). Så när du anropar funktionen "c.itermonthdays" börjar den räkna dagar från torsdag, och din torsdag kanske inte börjar den 1 april – den kan vara den 28 eller 29 mars. Så koden börjar räkna dagar från den 28 mars och alla dagar därefter fram till den 1 april. Dessa dagar räknas som nollor, och i utdata ser du dessa nollor. Detsamma gäller för slutet av månaden.
  • Så, förutom datumen 1–30, visas alla datum från föregående såväl som följande månad som nollor i utdata.

Hur man hämtar månads- och veckodagsnamn från det lokala systemet

Steg 4) Du kan hämta data från det lokala systemet, till exempel månader eller veckodagar.

Hämta månadsnamn från det lokala systemet i Python

  • Utdata här visar att vi har skrivit ut månadsnamnen från det lokala systemet. På samma sätt kan du även hämta veckodagarnas namn, som visas nedan.
  • Utdata beror på det lokala systemet. Om ditt lokala system är inställt på ett annat land, ger det utdata enligt de lokala inställningarna för det landet. Här har vi månader, så det kommer inte att göra någon skillnad, men för en vecka eller en dag kommer det säkert att skilja sig.

Hämta veckodagsnamn från det lokala systemet i Python

Hur man hittar en specifik dag för hela året

Steg 5) Du kan hämta listan för en specifik dag för ett helt år. Till exempel finns det en revisionsdag varje första Monday i en vecka. Anta att du vill veta datumet för den första Monday för varje månad. Du kan använda den här koden.

Hitta en specifik dag för hela året i Python

  • mycal = calendar.monthcalendar(2025, month) skapar en kalender för månaden.
  • Ställ in variablerna vecka1 och vecka2 till den första och andra veckan i kalendern.
  • Kontrollera om vecka 1 innehåller Monday och fastställa revisionsdagen.
  • Annars, ställ in revisionsdagen som den första Monday i vecka 2.
  • Utgången visar datumet för den första Monday som infaller i den månaden.
  • Längden på detta Cal-objekt beror på hur många veckor det finns i månaden. I vårt fall är det en eller två, eftersom den första Monday i veckan är oftast under den första veckan, men om inte, då betraktar vi den andra veckan. Låt oss se i detalj varför vi också betraktar den andra veckan.
  • Här använder vi kalenderkonstanten MondayKalenderobjektet ger dig konstanter som representerar söndag, Monday, tisdag och så vidare. Om, i vecka ett, dagen som representeras av Monday konstanten inte är lika med 0 – kom ihåg att nollor betyder dagar som tillhör en annan månad – då det Monday tillhör denna månad och revisionsdagen är inom vecka ett. Om den är 0, då är den första Monday är inte i den första veckan i månaden, så den måste vara i den andra.
  • I så fall ställer vi in ​​variabeln revisionsdag till Monday representeras av vecka två. Revisionsdagen återkommer med den dagen som gäller för antingen den första eller andra veckan.

Komplett Python Kalender Code Exempelvis

Här är den kompletta koden.

Python 2 Exempel

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 Exempel

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))

Användbara funktioner i Python kalendermodul

Förutom genomgången ovan levereras kalendermodulen med flera praktiska funktioner som fungerar utan att man behöver skapa en klassinstans:

  • kalender.kalender(år) returnerar en helårskalender som en flerradig sträng, medan kalender.prcal(år) skriver ut den direkt.
  • kalender.månad(år, månad) returnerar en enskild månad som text, och kalender.prmonth(år, månad) skriver ut det.
  • kalender.månadskalender(år, månad) returnerar månaden som en lista med veckorader, där varje dag är ett heltal och dagar utanför månaden är 0.

Dessa funktioner möjliggör snabb utmatning av kalendern på en rad, vilket är praktiskt i skript och interaktiva sessioner där du inte behöver den extra kontrollen från klasserna TextCalendar eller HTMLCalendar.

Hur man kontrollerar om det finns ett skottår Python

Kalendermodulen kan också tala om för dig om ett år är ett skottår, vilket är viktigt eftersom februari har 29 dagar istället för 28 under sådana år. Två funktioner hanterar detta:

  • calendar.isleap(år) returnerar Sant när året är ett skottår och Falskt annars.
  • kalender.skottdagar(y1, y2) returnerar antalet skottår i intervallet från y1 upp till, men exklusive, y2.

Till exempel returnerar calendar.isleap(2024) True, medan calendar.isleap(2025) returnerar False. Skottårskontroller är användbara när du validerar datum, schemalägger återkommande händelser eller räknar det exakta antalet dagar mellan två år.

Vanliga frågor

Kalendermodulen fokuserar på att skapa och analysera kalendrar – text, HTML, veckodagsnummer och skottårscheckar. Datetime-modulen hanterar specifika tidsstämplar, aritmetik och formatering av enskilda datum och tider. Många program importerar båda och använder dem tillsammans.

Anropa calendar.weekday(år, månad, dag). Returnerar ett heltal från 0 (Monday) till 6 (söndag). Koppla ihop det med calendar.day_name för att konvertera det numret till en läsbar etikett, t.ex. Monday eller fredag.

Använd calendar.monthrange(year, month). Den returnerar en tupel vars andra värde är antalet dagar, så calendar.monthrange(2025, 2)[1] returnerar 28. Det första värdet är veckodagen den första dagen i den månaden.

Använd calendar.LocaleTextCalendar eller calendar.LocaleHTMLCalendar och ange en språkinställning som "fr_FR". Den formaterade månaden skriver sedan ut veckodags- och månadsnamn på det språket, förutsatt att språkinställningen är installerad i operativsystemet.

Generera markupen med HTMLCalendar().formatmonth(2025, 1), öppna sedan en fil i skrivläge och anropa write() med den strängen. Om du sparar den med filändelsen .html kan vilken webbläsare som helst visa den formaterade kalendern.

Som standard börjar veckan på Monday, enligt den europeiska konventionen. Anropa calendar.setfirstweekday(calendar.SUNDAY), eller skicka en konstant som calendar.SUNDAY till en TextCalendar, för att få veckan att börja på en annan dag.

Datapipelines använder kalenderfunktioner för att härleda funktioner som veckodag, veckonummer och skottårsflaggor från råa datum. Dessa konstruerade kalenderfunktioner hjälper maskininlärningsmodeller att fånga veckovisa och säsongsbetonade mönster i tidsserieprognoser.

Ja. GitHub Copilot och agentic AI-assistenter kan skriva kodavsnitt för kalendermoduler – skriva ut månader, kontrollera skottår eller bygga en HTML-kalender – från en kort kommentar. Revvisa utdata, eftersom veckodagsindexering och förstadagsinställningar är lätta att förväxla.

Sammanfatta detta inlägg med: