"calendar" --- Allgemeine kalenderbezogene Funktionen
*****************************************************

**Quellcode:** Lib/calendar.py

======================================================================

Mit diesem Modul kannst du Kalender ausgeben wie das Unix-Programm
**cal**, und es stellt weitere nützliche Funktionen rund um den
Kalender bereit. Standardmäßig beginnen diese Kalender mit Montag als
erstem und Sonntag als letztem Wochentag (die europäische Gewohnheit).
Mit "setfirstweekday()" setzt du den ersten Wochentag auf Sonntag (6)
oder auf einen beliebigen anderen Wochentag. Parameter, die Daten
angeben, werden als Ganzzahlen übergeben. Verwandte Funktionalität
findest du auch in den Modulen "datetime" und "time".

Die in diesem Modul definierten Funktionen und Klassen verwenden einen
idealisierten Kalender, nämlich den heutigen gregorianischen Kalender,
unbegrenzt in beide Richtungen fortgesetzt. Das entspricht der
Definition des „proleptisch gregorianischen“ Kalenders in Dershowitz
und Reingolds Buch „Calendrical Calculations“, wo er die Grundlage
aller Berechnungen bildet. Das Jahr null und negative Jahreszahlen
werden so ausgelegt, wie es die Norm ISO 8601 vorschreibt. Das Jahr 0
ist 1 v. Chr., das Jahr -1 ist 2 v. Chr. und so weiter.

class calendar.Calendar(firstweekday=0)

   Erzeugt ein "Calendar"-Objekt. *firstweekday* ist eine Ganzzahl,
   die den ersten Wochentag angibt. "MONDAY" ist "0" (die Vorgabe),
   "SUNDAY" ist "6".

   Ein "Calendar"-Objekt stellt mehrere Methoden bereit, mit denen
   sich die Kalenderdaten für die Formatierung aufbereiten lassen.
   Diese Klasse formatiert selbst nichts – das ist Aufgabe der
   Unterklassen.

   "Calendar"-Instanzen haben die folgenden Methoden und Attribute:

   firstweekday

      Der erste Wochentag als Ganzzahl (0--6).

      Diese Eigenschaft lässt sich auch über "setfirstweekday()" und
      "getfirstweekday()" setzen beziehungsweise lesen.

   getfirstweekday()

      Gibt den aktuellen ersten Wochentag als "int" zurück (0--6).

      Entspricht dem Lesen der Eigenschaft "firstweekday".

   setfirstweekday(firstweekday)

      Setzt den ersten Wochentag auf *firstweekday*, übergeben als
      "int" (0--6).

      Entspricht dem Setzen der Eigenschaft "firstweekday".

   iterweekdays()

      Gibt einen Iterator über die Wochentagsnummern zurück, die für
      eine Woche verwendet werden. Der erste Wert des Iterators
      entspricht dem Wert der Eigenschaft "firstweekday".

   itermonthdates(year, month)

      Gibt einen Iterator für den Monat *month* (1--12) im Jahr *year*
      zurück. Dieser Iterator liefert alle Tage des Monats (als
      "datetime.date"-Objekte) sowie alle Tage vor dem Monatsanfang
      und nach dem Monatsende, die für vollständige Wochen nötig sind.

   itermonthdays(year, month)

      Gibt einen Iterator für den Monat *month* im Jahr *year* zurück,
      ähnlich wie "itermonthdates()", aber ohne die Beschränkung auf
      den Wertebereich von "datetime.date". Zurückgegeben werden
      einfach die Tagesnummern des Monats. Für Tage außerhalb des
      angegebenen Monats ist die Tagesnummer "0".

   itermonthdays2(year, month)

      Gibt einen Iterator für den Monat *month* im Jahr *year* zurück,
      ähnlich wie "itermonthdates()", aber ohne die Beschränkung auf
      den Wertebereich von "datetime.date". Zurückgegeben werden Tupel
      aus einer Tagesnummer des Monats und einer Wochentagsnummer.

   itermonthdays3(year, month)

      Gibt einen Iterator für den Monat *month* im Jahr *year* zurück,
      ähnlich wie "itermonthdates()", aber ohne die Beschränkung auf
      den Wertebereich von "datetime.date". Zurückgegeben werden Tupel
      aus einer Jahres-, einer Monats- und einer Tagesnummer.

      Added in version 3.7.

   itermonthdays4(year, month)

      Gibt einen Iterator für den Monat *month* im Jahr *year* zurück,
      ähnlich wie "itermonthdates()", aber ohne die Beschränkung auf
      den Wertebereich von "datetime.date". Zurückgegeben werden Tupel
      aus einer Jahres-, einer Monats-, einer Tages- und einer
      Wochentagsnummer.

      Added in version 3.7.

   monthdatescalendar(year, month)

      Gibt eine Liste der Wochen des Monats *month* im Jahr *year* als
      vollständige Wochen zurück. Wochen sind Listen aus sieben
      "datetime.date"-Objekten.

   monthdays2calendar(year, month)

      Gibt eine Liste der Wochen des Monats *month* im Jahr *year* als
      vollständige Wochen zurück. Wochen sind Listen aus sieben Tupeln
      aus Tagesnummer und Wochentagsnummer.

   monthdayscalendar(year, month)

      Gibt eine Liste der Wochen des Monats *month* im Jahr *year* als
      vollständige Wochen zurück. Wochen sind Listen aus sieben
      Tagesnummern.

   yeardatescalendar(year, width=3)

      Gibt die Daten des angegebenen Jahres formatierfertig zurück.
      Der Rückgabewert ist eine Liste von Monatszeilen. Jede
      Monatszeile enthält bis zu *width* Monate (Vorgabe 3). Jeder
      Monat enthält zwischen 4 und 6 Wochen, jede Woche 1--7 Tage. Die
      Tage sind "datetime.date"-Objekte.

   yeardays2calendar(year, width=3)

      Gibt die Daten des angegebenen Jahres formatierfertig zurück
      (ähnlich wie "yeardatescalendar()"). Die Einträge in den
      Wochenlisten sind Tupel aus Tagesnummer und Wochentagsnummer.
      Tagesnummern außerhalb dieses Monats sind null.

   yeardayscalendar(year, width=3)

      Gibt die Daten des angegebenen Jahres formatierfertig zurück
      (ähnlich wie "yeardatescalendar()"). Die Einträge in den
      Wochenlisten sind Tagesnummern. Tagesnummern außerhalb dieses
      Monats sind null.

class calendar.TextCalendar(firstweekday=0)

   Mit dieser Klasse lassen sich Kalender als reiner Text erzeugen.

   "TextCalendar"-Instanzen haben die folgenden Methoden:

   prweek(theweek, width)

      Gibt den Kalender einer Woche aus, wie ihn "formatweek()"
      liefert, und ohne abschließenden Zeilenumbruch.

   formatday(theday, weekday, width)

      Gibt eine Zeichenkette zurück, die einen einzelnen Tag in der
      angegebenen Breite *width* darstellt. Ist *theday* gleich "0",
      wird eine Zeichenkette aus Leerzeichen in dieser Breite
      zurückgegeben, die einen leeren Tag darstellt. Der Parameter
      *weekday* wird nicht verwendet.

   formatweek(theweek, width)

      Return a single week in a string with no newline. *width*
      specifies the width of the date columns, which are centered.
      Depends on the first weekday as specified in the constructor or
      set by the "setfirstweekday()" method.

   formatweekday(weekday, width)

      Gibt eine Zeichenkette zurück, die den Namen eines einzelnen
      Wochentags in der angegebenen Breite *width* darstellt. Der
      Parameter *weekday* ist eine Ganzzahl für den Wochentag, wobei
      "0" Montag und "6" Sonntag ist.

   formatweekheader(width)

      Gibt eine Zeichenkette mit der Kopfzeile der Wochentagsnamen
      zurück, formatiert mit der angegebenen Breite *width* je Spalte.
      Die Namen hängen von den Gebietsschema-Einstellungen ab und
      werden auf die angegebene Breite aufgefüllt.

   formatmonth(theyear, themonth, w=0, l=0)

      Gibt den Kalender eines Monats als mehrzeilige Zeichenkette
      zurück. Ist *w* angegeben, legt es die Breite der Datumsspalten
      fest, die zentriert werden. Ist *l* angegeben, legt es die
      Anzahl der Zeilen fest, die jede Woche einnimmt. Hängt vom
      ersten Wochentag ab, wie er im Konstruktor angegeben oder mit
      der Methode "setfirstweekday()" gesetzt wurde.

   formatmonthname(theyear, themonth, width, withyear=True)

      Gibt eine Zeichenkette zurück, die den Namen des Monats
      zentriert in der angegebenen Breite *width* darstellt. Ist
      *withyear* gleich "True", wird das Jahr mit ausgegeben. Die
      Parameter *theyear* und *themonth* geben Jahr und Monat an, für
      die der Name formatiert werden soll.

   prmonth(theyear, themonth, w=0, l=0)

      Gibt den Kalender eines Monats aus, wie ihn "formatmonth()"
      liefert.

   formatyear(theyear, w=2, l=1, c=6, m=3)

      Gibt einen Kalender für ein ganzes Jahr mit *m* Spalten als
      mehrzeilige Zeichenkette zurück. Die optionalen Parameter *w*,
      *l* und *c* stehen für die Breite der Datumsspalten, die Zeilen
      je Woche und die Anzahl der Leerzeichen zwischen den
      Monatsspalten. Hängt vom ersten Wochentag ab, wie er im
      Konstruktor angegeben oder mit der Methode "setfirstweekday()"
      gesetzt wurde. Das früheste Jahr, für das sich ein Kalender
      erzeugen lässt, hängt von der Plattform ab.

   pryear(theyear, w=2, l=1, c=6, m=3)

      Gibt den Kalender für ein ganzes Jahr aus, wie ihn
      "formatyear()" liefert.

class calendar.HTMLCalendar(firstweekday=0)

   Mit dieser Klasse lassen sich HTML-Kalender erzeugen.

   "HTMLCalendar"-Instanzen haben die folgenden Methoden:

   formatmonth(theyear, themonth, withyear=True)

      Gibt den Kalender eines Monats als HTML-Tabelle zurück. Ist
      *withyear* wahr, wird das Jahr in die Kopfzeile aufgenommen,
      andernfalls erscheint nur der Monatsname.

   formatyear(theyear, width=3)

      Gibt den Kalender eines Jahres als HTML-Tabelle zurück. *width*
      (Vorgabe 3) legt die Anzahl der Monate je Zeile fest.

   formatyearpage(theyear, width=3, css='calendar.css', encoding=None)

      Gibt den Kalender eines Jahres als vollständige HTML-Seite
      zurück. *width* (Vorgabe 3) legt die Anzahl der Monate je Zeile
      fest. *css* ist der Name des zu verwendenden Cascading Style
      Sheets. Soll kein Stylesheet verwendet werden, lässt sich "None"
      übergeben. *encoding* gibt die Kodierung für die Ausgabe an
      (Vorgabe "'utf-8'").

   formatmonthname(theyear, themonth, withyear=True)

      Gibt einen Monatsnamen als HTML-Tabellenzeile zurück. Ist
      *withyear* wahr, wird das Jahr in die Zeile aufgenommen,
      andernfalls erscheint nur der Monatsname.

   "HTMLCalendar" hat die folgenden Attribute, die du überschreiben
   kannst, um die vom Kalender verwendeten CSS-Klassen anzupassen:

   cssclasses

      Eine Liste der CSS-Klassen, die für jeden Wochentag verwendet
      werden. Die Standardliste lautet:

         cssclasses = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]

      Für jeden Tag lassen sich weitere Stile ergänzen:

         cssclasses = ["mon text-bold", "tue", "wed", "thu", "fri", "sat", "sun red"]

      Beachte, dass diese Liste genau sieben Einträge enthalten muss.

   cssclass_noday

      Die CSS-Klasse für einen Wochentag, der im vorherigen oder im
      kommenden Monat liegt.

      Added in version 3.7.

   cssclasses_weekday_head

      Eine Liste der CSS-Klassen, die für die Wochentagsnamen in der
      Kopfzeile verwendet werden. Die Vorgabe ist dieselbe wie bei
      "cssclasses".

      Added in version 3.7.

   cssclass_month_head

      Die CSS-Klasse für den Monatskopf (verwendet von
      "formatmonthname()"). Der Vorgabewert ist ""month"".

      Added in version 3.7.

   cssclass_month

      Die CSS-Klasse für die Tabelle des gesamten Monats (verwendet
      von "formatmonth()"). Der Vorgabewert ist ""month"".

      Added in version 3.7.

   cssclass_year

      Die CSS-Klasse für die Tabelle aus Tabellen des gesamten Jahres
      (verwendet von "formatyear()"). Der Vorgabewert ist ""year"".

      Added in version 3.7.

   cssclass_year_head

      Die CSS-Klasse für den Tabellenkopf des gesamten Jahres
      (verwendet von "formatyear()"). Der Vorgabewert ist ""year"".

      Added in version 3.7.

   Beachte, dass die Benennung der oben beschriebenen Klassenattribute
   im Singular steht (etwa "cssclass_month" oder "cssclass_noday"),
   sich die einzelne CSS-Klasse aber auch durch eine mit Leerzeichen
   getrennte Liste von CSS-Klassen ersetzen lässt, zum Beispiel:

      "text-bold text-red"

   Hier ein Beispiel, wie sich "HTMLCalendar" anpassen lässt:

      class CustomHTMLCal(calendar.HTMLCalendar):
          cssclasses = [style + " text-nowrap" for style in
                        calendar.HTMLCalendar.cssclasses]
          cssclass_month_head = "text-center month-head"
          cssclass_month = "text-center month"
          cssclass_year = "text-italic lead"

class calendar.LocaleTextCalendar(firstweekday=0, locale=None)

   Dieser Unterklasse von "TextCalendar" lässt sich im Konstruktor ein
   Gebietsschemaname übergeben. Sie gibt die Monats- und
   Wochentagsnamen dann in diesem Gebietsschema zurück.

class calendar.LocaleHTMLCalendar(firstweekday=0, locale=None)

   Dieser Unterklasse von "HTMLCalendar" lässt sich im Konstruktor ein
   Gebietsschemaname übergeben. Sie gibt die Monats- und
   Wochentagsnamen dann in diesem Gebietsschema zurück.

Bemerkung:

  Der Konstruktor sowie die Methoden "formatweekday()" und
  "formatmonthname()" dieser beiden Klassen ändern das Gebietsschema
  "LC_TIME" vorübergehend auf das angegebene *locale*. Da das aktuelle
  Gebietsschema eine prozessweite Einstellung ist, sind sie nicht
  threadsicher.

Für einfache Textkalender stellt dieses Modul die folgenden Funktionen
bereit.

calendar.setfirstweekday(firstweekday)

   Setzt den Wochentag ("0" ist Montag, "6" ist Sonntag), mit dem jede
   Woche beginnt. Zur Bequemlichkeit stehen die Werte "MONDAY",
   "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" und
   "SUNDAY" bereit. Um zum Beispiel Sonntag als ersten Wochentag zu
   setzen:

      import calendar
      calendar.setfirstweekday(calendar.SUNDAY)

calendar.firstweekday()

   Gibt die aktuelle Einstellung für den Wochentag zurück, mit dem
   jede Woche beginnt.

calendar.isleap(year)

   Gibt "True" zurück, wenn *year* ein Schaltjahr ist, andernfalls
   "False".

calendar.leapdays(y1, y2)

   Gibt die Anzahl der Schaltjahre im Bereich von *y1* bis *y2*
   (exklusiv) zurück, wobei *y1* und *y2* Jahre sind.

   Diese Funktion arbeitet auch für Bereiche, die über einen
   Jahrhundertwechsel hinausgehen.

calendar.weekday(year, month, day)

   Gibt den Wochentag ("0" ist Montag) für *year* ("1970"--…), *month*
   ("1"--"12") und *day* ("1"--"31") zurück.

calendar.weekheader(width)

   Gibt eine Kopfzeile mit abgekürzten Wochentagsnamen zurück. *width*
   gibt die Breite eines Wochentags in Zeichen an.

calendar.monthrange(year, month)

   Gibt den Wochentag des ersten Tages des Monats und die Anzahl der
   Tage im Monat für das angegebene *year* und *month* zurück.

calendar.monthcalendar(year, month)

   Gibt eine Matrix zurück, die den Kalender eines Monats darstellt.
   Jede Zeile stellt eine Woche dar; Tage außerhalb des Monats werden
   durch Nullen dargestellt. Jede Woche beginnt mit Montag, sofern
   nicht mit "setfirstweekday()" anders festgelegt.

calendar.prmonth(theyear, themonth, w=0, l=0)

   Gibt den Kalender eines Monats aus, wie ihn "month()" liefert.

calendar.month(theyear, themonth, w=0, l=0)

   Gibt den Kalender eines Monats als mehrzeilige Zeichenkette zurück
   und verwendet dazu "formatmonth()" der Klasse "TextCalendar".

calendar.prcal(theyear, w=0, l=0, c=6, m=3)

   Gibt den Kalender für ein ganzes Jahr aus, wie ihn "calendar()"
   liefert.

calendar.calendar(theyear, w=2, l=1, c=6, m=3)

   Gibt einen dreispaltigen Kalender für ein ganzes Jahr als
   mehrzeilige Zeichenkette zurück und verwendet dazu "formatyear()"
   der Klasse "TextCalendar".

calendar.timegm(tuple)

   Eine nicht verwandte, aber praktische Funktion: Sie nimmt ein Zeit-
   Tupel, wie es die Funktion "gmtime()" im Modul "time" zurückgibt,
   und gibt den entsprechenden Unix-Zeitstempel zurück, wobei sie die
   Epoche 1970 und die POSIX-Kodierung voraussetzt. Tatsächlich sind
   "time.gmtime()" und "timegm()" zueinander invers.

Das Modul "calendar" exportiert die folgenden Datenattribute:

calendar.day_name

   Eine Sequenz, die die Tage der Woche im aktuellen Gebietsschema
   darstellt, wobei Montag der Tag mit der Nummer 0 ist.

   >>> import calendar
   >>> list(calendar.day_name)
   ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

calendar.day_abbr

   Eine Sequenz, die die abgekürzten Tage der Woche im aktuellen
   Gebietsschema darstellt, wobei Mo der Tag mit der Nummer 0 ist.

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

   Aliase für die Tage der Woche, wobei "MONDAY" "0" und "SUNDAY" "6"
   ist.

   Added in version 3.12.

class calendar.Day

   Eine Enumeration, die die Tage der Woche als ganzzahlige Konstanten
   definiert. Die Mitglieder dieser Enumeration werden als "MONDAY"
   bis "SUNDAY" in den Modulnamensraum exportiert.

   Added in version 3.12.

calendar.month_name

   Eine Sequenz, die die Monate des Jahres im aktuellen Gebietsschema
   darstellt. Sie folgt der üblichen Konvention, dass Januar der Monat
   mit der Nummer 1 ist, hat also die Länge 13, und "month_name[0]"
   ist die leere Zeichenkette.

   >>> import calendar
   >>> list(calendar.month_name)
   ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']

   Vorsicht:

     In Gebietsschemata mit alternativen Formen der Monatsnamen ist
     die Sequenz "month_name" möglicherweise nicht geeignet, wenn ein
     Monatsname für sich steht und nicht Teil eines Datums ist. Im
     Griechischen und in vielen slawischen und baltischen Sprachen
     liefert "month_name" zum Beispiel den Monat im Genitiv. Verwende
     "standalone_month_name" für eine Form, die sich für den
     alleinstehenden Gebrauch eignet.

calendar.month_abbr

   Eine Sequenz, die die abgekürzten Monate des Jahres im aktuellen
   Gebietsschema darstellt. Sie folgt der üblichen Konvention, dass
   Januar der Monat mit der Nummer 1 ist, hat also die Länge 13, und
   "month_abbr[0]" ist die leere Zeichenkette.

   >>> import calendar
   >>> list(calendar.month_abbr)
   ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

   Vorsicht:

     In Gebietsschemata mit alternativen Formen der Monatsnamen ist
     die Sequenz "month_abbr" möglicherweise nicht geeignet, wenn ein
     Monatsname für sich steht und nicht Teil eines Datums ist.
     Verwende "standalone_month_abbr" für eine Form, die sich für den
     alleinstehenden Gebrauch eignet.

calendar.standalone_month_name

   Eine Sequenz, die die Monate des Jahres im aktuellen Gebietsschema
   in der alleinstehenden Form darstellt, sofern das Gebietsschema
   eine solche bereitstellt. Andernfalls entspricht sie "month_name".

   Added in version 3.15.

calendar.standalone_month_abbr

   Eine Sequenz, die die abgekürzten Monate des Jahres im aktuellen
   Gebietsschema in der alleinstehenden Form darstellt, sofern das
   Gebietsschema eine solche bereitstellt. Andernfalls entspricht sie
   "month_abbr".

   Added in version 3.15.

calendar.JANUARY
calendar.FEBRUARY
calendar.MARCH
calendar.APRIL
calendar.MAY
calendar.JUNE
calendar.JULY
calendar.AUGUST
calendar.SEPTEMBER
calendar.OCTOBER
calendar.NOVEMBER
calendar.DECEMBER

   Aliase für die Monate des Jahres, wobei "JANUARY" "1" und
   "DECEMBER" "12" ist.

   Added in version 3.12.

class calendar.Month

   Eine Enumeration, die die Monate des Jahres als ganzzahlige
   Konstanten definiert. Die Mitglieder dieser Enumeration werden als
   "JANUARY" bis "DECEMBER" in den Modulnamensraum exportiert.

   Added in version 3.12.

Das Modul "calendar" definiert die folgenden Ausnahmen:

exception calendar.IllegalMonthError(month)

   Eine Unterklasse von "ValueError" und "IndexError", die ausgelöst
   wird, wenn die angegebene Monatsnummer außerhalb des Bereichs 1-12
   (inklusive) liegt.

   Geändert in Version 3.12: "IllegalMonthError" ist jetzt auch eine
   Unterklasse von "ValueError". Neuer Code sollte es vermeiden,
   "IndexError" abzufangen.

   month

      Die ungültige Monatsnummer.

exception calendar.IllegalWeekdayError(weekday)

   Eine Unterklasse von "ValueError", die ausgelöst wird, wenn die
   angegebene Wochentagsnummer außerhalb des Bereichs 0-6 (inklusive)
   liegt.

   weekday

      Die ungültige Wochentagsnummer.

Siehe auch:

  Modul "datetime"
     Objektorientierte Schnittstelle für Datums- und Zeitangaben mit
     ähnlicher Funktionalität wie das Modul "time".

  Modul "time"
     Grundlegende zeitbezogene Funktionen.


Verwendung über die Befehlszeile
================================

Added in version 2.5.

Das Modul "calendar" lässt sich als Skript über die Befehlszeile
ausführen, um einen Kalender interaktiv auszugeben.

   python -m calendar [-h] [-L LOCALE] [-e ENCODING] [-t {text,html}]
                      [-w WIDTH] [-l LINES] [-s SPACING] [-m MONTHS] [-c CSS]
                      [-f FIRST_WEEKDAY] [year] [month]

Um zum Beispiel einen Kalender für das Jahr 2000 auszugeben:

   $ python -m calendar 2000
                                     2000

         January                   February                   March
   Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                   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                      May                       June
   Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th 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

           July                     August                  September
   Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
                   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

         October                   November                  December
   Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We 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

Die folgenden Optionen werden akzeptiert:

--help, -h

   Gibt die Hilfemeldung aus und beendet das Programm.

--locale LOCALE, -L LOCALE

   Das Gebietsschema, das für die Monats- und Wochentagsnamen
   verwendet wird. Vorgabe ist Englisch.

--encoding ENCODING, -e ENCODING

   Die Kodierung, die für die Ausgabe verwendet wird. "--encoding" ist
   erforderlich, wenn "--locale" gesetzt ist.

--type {text,html}, -t {text,html}

   Gibt den Kalender als Text im Terminal oder als HTML-Dokument aus.

--first-weekday FIRST_WEEKDAY, -f FIRST_WEEKDAY

   Der Wochentag, mit dem jede Woche beginnt. Muss eine Zahl zwischen
   0 (Montag) und 6 (Sonntag) sein. Vorgabe ist 0.

   Added in version 3.13.

year

   Das Jahr, für das der Kalender ausgegeben wird. Vorgabe ist das
   aktuelle Jahr.

month

   Der Monat des angegebenen "year", für den der Kalender ausgegeben
   wird. Muss eine Zahl zwischen 1 und 12 sein. In der Vorgabe wird
   ein Kalender für das gesamte Jahr ausgegeben.

*Optionen für den Textmodus:*

--width WIDTH, -w WIDTH

   Die Breite der Datumsspalte in Terminalspalten. Das Datum wird
   zentriert in der Spalte ausgegeben. Werte kleiner als 2 werden
   ignoriert. Vorgabe ist 2.

--lines LINES, -l LINES

   Die Anzahl der Zeilen je Woche in Terminalzeilen. Das Datum wird
   oben ausgerichtet ausgegeben. Werte kleiner als 1 werden ignoriert.
   Vorgabe ist 1.

--spacing SPACING, -s SPACING

   Der Abstand zwischen den Monaten in Spalten. Werte kleiner als 2
   werden ignoriert. Vorgabe ist 6.

--months MONTHS, -m MONTHS

   Die Anzahl der Monate, die je Zeile ausgegeben werden. Vorgabe ist
   3.

Geändert in Version 3.14: Standardmäßig wird das heutige Datum farbig
hervorgehoben. Das lässt sich über Umgebungsvariablen steuern.

Geändert in Version 3.15: Standardmäßig wird jetzt auch der Monat
farbig hervorgehoben, und die Wochentage sind ebenfalls farbig. Dieses
Verhalten lässt sich über Umgebungsvariablen steuern.

*Optionen für den HTML-Modus:*

--css CSS, -c CSS

   Der Pfad eines CSS-Stylesheets, das für den Kalender verwendet
   wird. Dieser muss entweder relativ zum erzeugten HTML sein oder
   eine absolute HTTP- oder "file:///"-URL.
