Modul calendar: Kalender ausgeben über Python
Python bietet ein Modul um ein Kalenderblatt bzw. mehrere auszugeben.
Januar 2020 Mo Di Mi Do Fr Sa So 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Dabei kann gewählt werden zwischen den 4 Formen:
- TextCalendar
- LocaleTextCalendar
- HTMLCalendar
- LocaleHTMLCalendar
TextCalendar gibt das gewählte Kalenderblatt als reinen Text aus, dagegen werden beim HTMLCalendar auch entsprechende HTML-Tags um die verschiedenen Daten ausgeben. Sobald der Kalender mit "Locale…" startet, erhält man als Beschriftung die lokale Sprache (in unserem Fall dann deutsche Monatsbezeichnungen und die abgekürzten Wochentage in Deutsch).
Über die Anweisung formatmonth
wird das gewünschte Jahr und der gewünschte Monat angegeben.
import calendar
kalenderblatt = calendar.TextCalendar(calendar.MONDAY)
ausgabe = kalenderblatt.formatmonth(2020,1)
print(ausgabe)
oder in Deutsch
import calendar
kalenderblatt = calendar.LocaleTextCalendar(calendar.MONDAY)
ausgabe = kalenderblatt.formatmonth(2020,1)
print(ausgabe)
Januar 2020 Mo Di Mi Do Fr Sa So 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
ein HTML-Kalender:
Möchte man direkt HTML-Code mit Klassen (für das Design später über CSS) erhalten, kann man die HTML-Variante über LocaleHTMLCalendar
auswählen.
import calendar
kalenderblatt = calendar.HTMLCalendar(calendar.MONDAY)
ausgabe = kalenderblatt.formatmonth(2020,1)
print(ausgabe)
<table border="0" cellpadding="0" cellspacing="0" class="month"> <tr><th colspan="7" class="month">Januar 2020</th></tr> <tr><th class="mon">Mo</th><th class="tue">Di</th><th class="wed">Mi</th><th class="thu">Do</th><th class="fri">Fr</th><th class="sat">Sa</th><th class="sun">So</th></tr> <tr><td class="noday"> </td><td class="noday"> </td><td class="wed">1</td><td class="thu">2</td><td class="fri">3</td><td class="sat">4</td><td class="sun">5</td></tr> <tr><td class="mon">6</td><td class="tue">7</td><td class="wed">8</td><td class="thu">9</td><td class="fri">10</td><td class="sat">11</td><td class="sun">12</td></tr> <tr><td class="mon">13</td><td class="tue">14</td><td class="wed">15</td><td class="thu">16</td><td class="fri">17</td><td class="sat">18</td><td class="sun">19</td></tr> <tr><td class="mon">20</td><td class="tue">21</td><td class="wed">22</td><td class="thu">23</td><td class="fri">24</td><td class="sat">25</td><td class="sun">26</td></tr> <tr><td class="mon">27</td><td class="tue">28</td><td class="wed">29</td><td class="thu">30</td><td class="fri">31</td><td class="noday"> </td><td class="noday"> </td></tr> </table>
Kompletter Jahreskalender
import calendar
kalenderblatt = calendar.LocaleTextCalendar(calendar.MONDAY)
ausgabe = kalenderblatt.formatyear(2020, 2, 1, 1, 3)
print(ausgabe)
2020 Januar Februar März Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So 1 2 3 4 5 1 2 1 6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8 13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15 20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22 27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29 30 31 April Mai Juni Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So 1 2 3 4 5 1 2 3 1 2 3 4 5 6 7 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14 13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21 20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28 27 28 29 30 25 26 27 28 29 30 31 29 30 Juli August September Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So 1 2 3 4 5 1 2 1 2 3 4 5 6 6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13 13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20 20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27 27 28 29 30 31 24 25 26 27 28 29 30 28 29 30 31 Oktober November Dezember Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So Mo Di Mi Do Fr Sa So 1 2 3 4 1 1 2 3 4 5 6 5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13 12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20 19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27 26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31 30