Seite 1 von 1
Unterschiedliche Kalenderausgaben...
Verfasst: Donnerstag 11. Februar 2016, 21:52
von mutetella
Code: Alles auswählen
$ cal -m1 1
Januar 1
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
Code: Alles auswählen
>>> def print_calendar(y, m):
... print 'Mo Tu We Th Fr Sa Su'
... for week in calendar.monthcalendar(y, m):
... print ' '.join('{:2d}'.format(d) for d in week)
...
>>> print_calendar(1, 1)
Mo Tu We Th Fr Sa Su
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 0 0 0 0
Welchen Wochentag hat der (0001, 01, 01) denn nun?
Re: Unterschiedliche Kalenderausgaben...
Verfasst: Donnerstag 11. Februar 2016, 22:29
von jerch
Hmm welcher richtig zählt, ist schwierig zu sagen. Zumindest beachtet cal die Kalenderwende vom julianischen zum gregorianischen Kalender, wodurch 10 Tage 1582 wegfielen (auf den 4. Oktober folgte der 15.), während die Wochentage einfach weiterliefen. cal hat diese Umstellung 1752 drin, da wurde in UK der gregorianische Kalender übernommen (auf den 2. Sept. folgt dort der 14.) calendar beachtet weder das eine noch das andere und zählt daher mit ziemlicher Sicherheit falsch.
Keine Ahnung, ob es bis zum Jahr 1 noch mehr solcher Sprünge gab bzw. welchen Stellenwert unsere Wochentage zu dieser Zeit hatten. Zumindest geht man davon aus, dass die Jahreszählung von 300-700 sehr ungenau ist und durchaus hier und da Jahre fehlen oder zuviel sein können, was die Wochentagsfrage vor diesem Zeitraum eh obsolet macht.
Edit: Ok die Unsicherheit ist früher, eher 200-500, weshalb Dionysius Exiguus ab 532 die Osterberechnung erneuerte. Demnach fiel Ostern 532 auf den 11. April, was in cal ein Sonntag ist. cal machts wohl richtig

Re: Unterschiedliche Kalenderausgaben...
Verfasst: Freitag 12. Februar 2016, 09:16
von mutetella
@jerch
Danke für Deine Hinweise!
Dann kann ich die Aussage der
calendar Dokumentation
... the datetime module which uses an idealized calendar, ...
also dahingehend verstehen, dass das
datetime Modul bewusst die Kante julianisch → gregorianisch und andere Widrigkeiten nicht beachtet?
Was mir aufgefallen ist:
- `cal` gibt Wochennummern immer erst ab dem Monat der Umstellung julianisch → gregorianisch aus (je nach angegebenem Land)
- `strftime()` arbeitet bis >= Python 3.1 erst ab Jahr >= 1900, bis >= Python 3.2 ab Jahr >=1000 und ab >= Python 3.3 ohne Beschränkung.
- `strftime()` gibt für den (1900, 12, 31) via '%W' die 53. Kalenderwoche aus. Für `isocalendar()` wie auch `cal` ist das bereits die 1. Kalenderwoche des folgenden Jahres.
Mir ist im Groben klar, weshalb das so ist. Ich weiß nur noch nicht, an was ich mich denn nun halten soll zumal die mir bekannten Kalenderprogramme entweder von vornherein eine Beschränkung auf das Jahr 1900, 1902, 1980 etc. einbauen bzw. in ihren Ausgaben auch untereinander abweichen...