Unterschiedliche Kalenderausgaben...

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

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?
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

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 ;)
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@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...
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten