calendar
— Allmänna kalenderrelaterade funktioner¶
Källkod: Lib/calendar.py
Med den här modulen kan du skriva ut kalendrar på samma sätt som med Unix-programmet cal, och du får tillgång till ytterligare användbara funktioner som är relaterade till kalendern. Som standard har dessa kalendrar måndag som veckans första dag och söndag som den sista (den europeiska konventionen). Använd setfirstweekday()
för att ställa in veckans första dag till söndag (6) eller till någon annan veckodag. Parametrar som anger datum anges som heltal. För relaterad funktionalitet, se även modulerna datetime
och time
.
De funktioner och klasser som definieras i denna modul använder en idealiserad kalender, den nuvarande gregorianska kalendern förlängd på obestämd tid i båda riktningarna. Detta motsvarar definitionen av den ”proleptiska gregorianska” kalendern i Dershowitz och Reingolds bok ”Calendrical Calculations”, där den är baskalendern för alla beräkningar. Noll och negativa år tolkas enligt ISO 8601-standarden. År 0 är 1 f.Kr., år -1 är 2 f.Kr. och så vidare.
- class calendar.Calendar(firstweekday=0)¶
Skapar ett
Calendar
-objekt. firstweekday är ett heltal som anger den första dagen i veckan.MONDAY
är0
(standard),SUNDAY
är6
.Ett
Calendar
-objekt tillhandahåller flera metoder som kan användas för att förbereda kalenderdata för formatering. Den här klassen gör inte någon formatering själv. Detta är ett jobb för underklasser.Calendar
-instanser har följande metoder och attribut:- firstweekday¶
Den första veckodagen som ett heltal (0–6).
Denna egenskap kan också ställas in och läsas med
setfirstweekday()
respektivegetfirstweekday()
.
- getfirstweekday()¶
Returnerar en
int
för den aktuella första veckodagen (0–6).Identiskt med att läsa egenskapen
firstweekday
.
- setfirstweekday(firstweekday)¶
Ställ in den första veckodagen till firstweekday, som skickas som en
int
(0–6)Identiskt med att ställa in egenskapen
firstweekday
.
- iterweekdays()¶
Returnerar en iterator för de veckodagsnummer som kommer att användas för en vecka. Det första värdet från iteratorn kommer att vara detsamma som värdet för egenskapen
firstweekday
.
- itermonthdates(year, month)¶
Returnerar en iterator för månaden month (1–12) i året year. Denna iterator returnerar alla dagar (som
datetime.date
-objekt) för månaden och alla dagar före månadens början eller efter månadens slut som krävs för att få en komplett vecka.
- itermonthdays(year, month)¶
Returnerar en iterator för månaden month i året year liknande
itermonthdates()
, men inte begränsad avdatetime.date
intervallet. Dagar som returneras kommer helt enkelt att vara nummer för dag i månaden. För dagar som ligger utanför den angivna månaden är dagsnumret0
.
- itermonthdays2(year, month)¶
Returnerar en iterator för månaden month i året year liknande
itermonthdates()
, men inte begränsad avdatetime.date
intervallet. Dagar som returneras är tupler som består av ett nummer för dagen i månaden och ett nummer för veckodagen.
- itermonthdays3(year, month)¶
Returnerar en iterator för månaden månad i året år liknande
itermonthdates()
, men inte begränsad av intervalletdatetime.date
. Dagar som returneras är tupler som består av ett år, en månad och en dag i månaden.Tillagd i version 3.7.
- itermonthdays4(year, month)¶
Returnerar en iterator för månaden månad i året år liknande
itermonthdates()
, men inte begränsad av intervalletdatetime.date
. Dagar som returneras kommer att vara tupler som består av ett år, en månad, en dag i månaden och en veckodag.Tillagd i version 3.7.
- monthdatescalendar(year, month)¶
Returnerar en lista över veckorna i månaden månad i året som hela veckor. Veckorna är listor med sju
datetime.date
-objekt.
- monthdays2calendar(year, month)¶
Returnerar en lista över veckorna i månaden månad i år som hela veckor. Veckorna är listor med sju tupler av dagsnummer och veckodagsnummer.
- monthdayscalendar(year, month)¶
Returnerar en lista med veckorna i månaden månad i år som hela veckor. Veckorna är listor med sjudagarsnummer.
- yeardatescalendar(year, width=3)¶
Returnerar data för det angivna året som är redo för formatering. Returvärdet är en lista med månadsrader. Varje månadsrad innehåller upp till bredd månader (standard är 3). Varje månad innehåller mellan 4 och 6 veckor och varje vecka innehåller 1–7 dagar. Dagar är
datetime.date
-objekt.
- yeardays2calendar(year, width=3)¶
Returnerar data för det angivna året redo för formatering (liknande
yeardatescalendar()
). Posterna i veckolistorna är tupler av dagsnummer och veckodagsnummer. Dagnummer utanför denna månad är noll.
- yeardayscalendar(year, width=3)¶
Returnerar data för det angivna året redo för formatering (liknande
yeardatescalendar()
). Posterna i veckolistorna är dagnummer. Dagnummer utanför denna månad är noll.
- class calendar.TextCalendar(firstweekday=0)¶
Denna klass kan användas för att generera kalendrar i klartext.
TextCalendar
-instanser har följande metoder:- formatday(theday, weekday, width)¶
Returnerar en sträng som representerar en enda dag formaterad med den angivna bredden. Om theday är
0
, returneras en sträng med mellanslag med angiven bredd, som representerar en tom dag. Parametern weekday är oanvänd.
- formatweek(theweek, w=0)¶
Returnerar en enskild vecka i en sträng utan ny rad. Om w anges, specificerar det bredden på datumkolumnerna, som är centrerade. Beror på den första veckodagen som anges i konstruktören eller ställs in med metoden
setfirstweekday()
.
- formatweekday(weekday, width)¶
Returnerar en sträng som representerar namnet på en enskild veckodag formaterad till den angivna bredden. Parametern weekday är ett heltal som representerar veckodagen, där
0
är måndag och6
är söndag.
- formatweekheader(width)¶
Returnerar en sträng som innehåller rubrikraden med veckodagsnamn, formaterad med angiven bredd för varje kolumn. Namnen beror på lokalinställningarna och fylls på med den angivna bredden.
- formatmonth(theyear, themonth, w=0, l=0)¶
Returnerar en månads kalender i en sträng med flera rader. Om w anges, specificerar det bredden på datumkolumnerna, som är centrerade. Om l anges, specificerar det antalet rader som varje vecka ska använda. Beror på den första veckodagen som anges i konstruktören eller ställs in med metoden
setfirstweekday()
.
- formatmonthname(theyear, themonth, width=0, withyear=True)¶
Returnerar en sträng som representerar månadens namn centrerat inom den angivna bredden. Om withyear är
True
inkluderas året i utdata. Parametrarna theyear och themonth anger året respektive månaden för det namn som ska formateras.
- prmonth(theyear, themonth, w=0, l=0)¶
Skriv ut en månads kalender som den returneras av
formatmonth()
.
- formatyear(theyear, w=2, l=1, c=6, m=3)¶
Returnerar en kalender med m-kolumner för ett helt år som en sträng med flera rader. De valfria parametrarna w, l och c anger datumkolumnens bredd, rader per vecka respektive antal mellanslag mellan månadskolumnerna. Beror på den första veckodagen som anges i konstruktören eller ställs in med metoden
setfirstweekday()
. Det tidigaste året för vilket en kalender kan genereras är plattformsberoende.
- pryear(theyear, w=2, l=1, c=6, m=3)¶
Skriv ut kalendern för ett helt år enligt
formatyear()
.
- class calendar.HTMLCalendar(firstweekday=0)¶
Denna klass kan användas för att generera HTML-kalendrar.
HTMLCalendar
-instanser har följande metoder:- formatmonth(theyear, themonth, withyear=True)¶
Returnerar en månads kalender som en HTML-tabell. Om withyear är true kommer året att inkluderas i sidhuvudet, annars används bara månadsnamnet.
- formatyear(theyear, width=3)¶
Returnerar en kalender för ett år som en HTML-tabell. width (standard är 3) anger antalet månader per rad.
- formatyearpage(theyear, width=3, css='calendar.css', encoding=None)¶
Returnerar ett års kalender som en komplett HTML-sida. width (standard är 3) anger antalet månader per rad. css är namnet på den kaskadformatmall som ska användas.
None
kan anges om ingen formatmall ska användas. encoding anger den kodning som ska användas för utdata (standard är systemets standardkodning).
- formatmonthname(theyear, themonth, withyear=True)¶
Returnerar ett månadsnamn som en HTML-tabellrad. Om withyear är true kommer året att inkluderas i raden, annars kommer bara månadsnamnet att användas.
HTMLCalendar
har följande attribut som du kan åsidosätta för att anpassa de CSS-klasser som används av kalendern:- cssclasses¶
En lista över CSS-klasser som används för varje veckodag. Standardklasslistan är:
cssclasses = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]
fler stilar kan läggas till för varje dag:
cssclasses = ["mon text-bold", "tue", "wed", "thu", "fri", "sat", "sun red"]
Observera att längden på denna lista måste vara sju punkter.
- cssclass_noday¶
CSS-klassen för en veckodag som infaller under föregående eller kommande månad.
Tillagd i version 3.7.
- cssclasses_weekday_head¶
En lista med CSS-klasser som används för veckodagsnamn i rubrikraden. Standardvärdet är detsamma som för
cssclasses
.Tillagd i version 3.7.
- cssclass_month_head¶
CSS-klassen för månadens huvud (används av
formatmonthname()
). Standardvärdet är"month"
.Tillagd i version 3.7.
- cssclass_month¶
CSS-klassen för hela månadens tabell (används av
formatmonth()
). Standardvärdet är"month"
.Tillagd i version 3.7.
- cssclass_year¶
CSS-klassen för hela årets tabell av tabeller (används av
formatyear()
). Standardvärdet är"year"
.Tillagd i version 3.7.
- cssclass_year_head¶
CSS-klassen för tabellhuvudet för hela året (används av
formatyear()
). Standardvärdet är"year"
.Tillagd i version 3.7.
Observera att även om namngivningen för de ovan beskrivna klassattributen är singular (t.ex.
cssclass_month
cssclass_noday
), kan man ersätta den enskilda CSS-klassen med en mellanslagsseparerad lista över CSS-klasser, till exempel:"text-bold text-red"
Här är ett exempel på hur
HTMLCalendar
kan anpassas:class CustomHTMLCal(kalender.HTMLCalendar): cssclasses = [style + " text-nowrap" for style in calendar.HTMLCalendar.cssclasses] cssclass_month_head = "text-center månad-huvud" cssclass_month = "text-center månad" cssclass_year = "text-italic lead"
- class calendar.LocaleTextCalendar(firstweekday=0, locale=None)¶
Denna subklass av
TextCalendar
kan ges ett lokalt namn i konstruktören och returnerar namn på månader och veckodagar i den angivna lokalen.
- class calendar.LocaleHTMLCalendar(firstweekday=0, locale=None)¶
Denna subklass av
HTMLCalendar
kan ges ett lokalt namn i konstruktören och returnerar namn på månader och veckodagar i det angivna lokala språket.
Anteckning
Metoderna constructor, formatweekday()
och formatmonthname()
i dessa två klasser ändrar temporärt LC_TIME
locale till den angivna locale. Eftersom den aktuella locale är en processomfattande inställning är de inte trådsäkra.
För enkla textkalendrar tillhandahåller denna modul följande funktioner.
- calendar.setfirstweekday(weekday)¶
Anger vilken veckodag (
0
är måndag,6
är söndag) som ska börja varje vecka. VärdenaMONDAY
,TUESDAY
,WEDNESDAY
,THURSDAY
,FRIDAY
,SATURDAY
ochSUNDAY
anges för enkelhets skull. Till exempel, för att ställa in den första veckodagen till söndag:import calendar calendar.setfirstweekday(calendar.SUNDAY)
- calendar.firstweekday()¶
Returnerar den aktuella inställningen för vilken veckodag som ska starta varje vecka.
- calendar.leapdays(y1, y2)¶
Returnerar antalet skottår i intervallet från y1 till y2 (exklusive), där y1 och y2 är årtal.
Denna funktion fungerar för intervall som sträcker sig över ett sekelskifte.
- calendar.weekday(year, month, day)¶
Returnerar veckodagen (
0
är måndag) för år (1970
–…), month (1
–12
), dag (1
–31
).
- calendar.weekheader(n)¶
Returnerar en header som innehåller förkortade veckodagsnamn. n anger bredden i tecken för en veckodag.
- calendar.monthrange(year, month)¶
Returnerar veckodag för första dagen i månaden och antal dagar i månaden, för angivna år och månad.
- calendar.monthcalendar(year, month)¶
Returnerar en matris som representerar en månads kalender. Varje rad representerar en vecka; dagar utanför månaden representeras av nollor. Varje vecka börjar med måndag om den inte har ställts in med
setfirstweekday()
.
- calendar.prmonth(theyear, themonth, w=0, l=0)¶
Skriver ut en månads kalender som den returneras av
month()
.
- calendar.month(theyear, themonth, w=0, l=0)¶
Returnerar en månads kalender i en flerradig sträng med hjälp av
formatmonth()
i klassenTextCalendar
.
- calendar.prcal(year, w=0, l=0, c=6, m=3)¶
Skriver ut kalendern för ett helt år som returneras av
calendar()
.
- calendar.calendar(year, w=2, l=1, c=6, m=3)¶
Returnerar en kalender med 3 kolumner för ett helt år som en sträng med flera rader med
formatyear()
i klassenTextCalendar
.
- calendar.timegm(tuple)¶
En orelaterad men praktisk funktion som tar en tidstupel, som den som returneras av funktionen
gmtime()
i modulentime
, och returnerar motsvarande Unix-tidsstämpelvärde, med epoken 1970 och POSIX-kodning. I själva verket ärtime.gmtime()
ochtimegm()
varandras invers.
Modulen calendar
exporterar följande dataattribut:
- calendar.day_name¶
En sekvens som representerar veckodagarna i den aktuella språkversionen, där måndag är dag nummer 0.
>>> import calendar >>> list(calendar.day_name) ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
- calendar.day_abbr¶
En sekvens som representerar de förkortade veckodagarna i den aktuella språkversionen, där Mon är dag nummer 0.
>>> import calendar >>> list(calendar.day_abbr) ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
- calendar.MONDAY¶
- calendar.TUESDAY¶
- calendar.WEDNESDAY¶
- calendar.THURSDAY¶
- calendar.FRIDAY¶
- calendar.SATURDAY¶
- calendar.SUNDAY¶
Aliasnamn för veckodagarna, där
MONDAY
är0
ochSUNDAY
är6
.Tillagd i version 3.12.
- class calendar.Day¶
Enumeration som definierar veckodagar som heltalskonstanter. Medlemmarna i denna uppräkning exporteras till modulens omfattning som
MONDAY
tillSUNDAY
.Tillagd i version 3.12.
- calendar.month_name¶
En sekvens som representerar årets månader i den aktuella locale. Detta följer den normala konventionen att januari är månad nummer 1, så den har en längd på 13 och
month_name[0]
är den tomma strängen.>>> import calendar >>> list(calendar.month_name) ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
- calendar.month_abbr¶
En sekvens som representerar årets förkortade månader i aktuell lokal. Detta följer den normala konventionen att januari är månad nummer 1, så den har en längd på 13 och
month_abbr[0]
är den tomma strängen.>>> import calendar >>> list(calendar.month_abbr) ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
- calendar.JANUARY¶
- calendar.FEBRUARY¶
- calendar.MARCH¶
- calendar.APRIL¶
- calendar.MAY¶
- calendar.JUNE¶
- calendar.JULY¶
- calendar.AUGUST¶
- calendar.SEPTEMBER¶
- calendar.OCTOBER¶
- calendar.NOVEMBER¶
- calendar.DECEMBER¶
Alias för årets månader, där
JANUARI
är1
ochDECEMBER
är12
.Tillagd i version 3.12.
- class calendar.Month¶
Enumeration som definierar årets månader som heltalskonstanter. Medlemmarna i denna uppräkning exporteras till modulens omfattning som
JANUARY
tillDECEMBER
.Tillagd i version 3.12.
Modulen calendar
definierar följande undantag:
- exception calendar.IllegalMonthError(month)¶
En subklass av
ValueError
som uppstår när det angivna månadsnumret ligger utanför intervallet 1-12 (inklusive).- month¶
Det ogiltiga månadsnumret.
- exception calendar.IllegalWeekdayError(weekday)¶
En subklass av
ValueError
som uppstår när det angivna veckodagsnumret ligger utanför intervallet 0-6 (inklusive).- weekday¶
Det ogiltiga veckodagsnumret.
Se även
Användning av kommandoraden¶
Tillagd i version 2.5.
Modulen calendar
kan köras som ett skript från kommandoraden för att interaktivt skriva ut en kalender.
python -m calendar [-h] [-L LOCALE] [-e ENCODING] [-t {text,html}] [-w WIDTH] [-l LINES] [-s SPACING] [-m MONTHS] [-c CSS
[-w WIDTH] [-l LINES] [-s SPACING] [-m MONTHS] [-c CSS]
[-f FÖRSTA_VECKODAGEN] [år] [månad]
Till exempel för att skriva ut en kalender för år 2000:
$ python -m kalender 2000
2000
Januari Februari Mars
Mån tu ons tors fre sö mån tu ons tors fre sö mån tu ons tors fre sö mån tu ons tors fre sö
1 2 1 2 3 4 5 6 1 2 3 4 5
3 4 5 6 7 8 9 7 8 9 10 11 12 13 6 7 8 9 10 11 12
10 11 12 13 14 15 16 14 15 16 17 18 19 20 13 14 15 16 17 18 19
17 18 19 20 21 22 23 21 22 23 24 25 26 27 20 21 22 23 24 25 26
24 25 26 27 28 29 30 28 29 27 28 29 30 31
31
April Maj Juni
Mån tu ons ti fr sa su mån tu ons ti fr sa su mån tu ons ti fr sa su mån tu ons ti fr sa su
1 2 1 2 3 4 5 6 7 1 2 3 4
3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
24 25 26 27 28 29 30 29 30 31 26 27 28 29 30
Juli Augusti September
Mån tu ons tors fre sö mån tu ons tors fre sö mån tu ons tors fre sö mån tu ons tors fre sö
1 2 1 2 3 4 5 6 1 2 3
3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10
10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
31
Oktober November December
Mo Tu Vi Th Fr Sa Su Mo Tu Vi Th Fr Sa Su Mo Tu Vi Th Fr Sa Su Mo Tu Vi Th Fr Sa Su
1 1 2 3 4 5 1 2 3
2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10
9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
30 31
Följande alternativ accepteras:
- --help, -h¶
Visa hjälpmeddelandet och avsluta.
- --locale LOCALE, -L LOCALE¶
Det språk som ska användas för namn på månad och veckodag. Standardvärdet är engelska.
- --encoding ENCODING, -e ENCODING¶
Den kodning som ska användas för utdata.
--encoding
krävs om--locale
har angetts.
- --type {text,html}, -t {text,html}¶
Skriv ut kalendern till terminalen som text eller som ett HTML-dokument.
- --first-weekday FIRST_WEEKDAY, -f FIRST_WEEKDAY¶
Den veckodag som ska starta varje vecka. Måste vara ett tal mellan 0 (måndag) och 6 (söndag). Standardvärdet är 0.
Tillagd i version 3.13.
- year¶
Det år som kalendern ska skrivas ut för. Standardvärdet är innevarande år.
- month¶
Den månad i det angivna
year
som kalendern ska skrivas ut för. Måste vara ett tal mellan 1 och 12 och kan endast användas i textläge. Standard är att skriva ut en kalender för hela året.
Alternativ för textläge:
- --width WIDTH, -w WIDTH¶
Datumkolumnens bredd i terminalkolumner. Datumet skrivs ut centrerat i kolumnen. Alla värden lägre än 2 ignoreras. Standardvärdet är 2.
- --lines LINES, -l LINES¶
Antalet rader för varje vecka i terminalrader. Datumet skrivs ut toppjusterat. Alla värden lägre än 1 ignoreras. Standardvärdet är 1.
- --spacing SPACING, -s SPACING¶
Mellanrummet mellan månader i kolumner. Alla värden lägre än 2 ignoreras. Standardvärdet är 6.
- --months MONTHS, -m MONTHS¶
Antal månader som skrivs ut per rad. Standardvärdet är 3.
Ändrad i version 3.14: Som standard är dagens datum markerat i färg och kan kontrolleras med hjälp av miljövariabler.
Alternativ för HTML-läge:
- --css CSS, -c CSS¶
Sökvägen till en CSS-stilmall som ska användas för kalendern. Den måste antingen vara relativ till den genererade HTML-filen eller en absolut HTTP- eller
file:///
-URL.