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.

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







