home
Der Recherchekompass
  [ home | anleitungen | recherchen | hilfe | sitemap | index | suchen ] 
home » recherchen » unser kalender » druckversion  

Wandelgang durch die Zeiten
  Unser Kalender
  Ein Wandelgang durch die Zeiten

  Inhaltsverzeichnis

Ständig verfügbar und unersätzlich, zur Vereinbarung eines Termines: Unser Kalender. Aber das war nicht immer so, früher hatte nicht jeder einen vorgefertigten Kalender zur Hand, Datümer [1] mussten errechnet werden. Die richtigen Termine für Aussaat und Ernte, aber auch für religiöse Feiern, waren wichtig für ein ganzes Volk. Schon immer war das Kalenderwesen ein besonderes Anliegen für Staatsoberhäupter und religiöse Führer.

 

Ära die; Ären: 1. längerer durch etw. Bestimmtes gekennzeichneter, geprägter Zeitabschnitt. 2. (Geol.) Erdzeitalter
Epoche [gr.mlat.; "das Anhalten (in der Zeit)"] die; -, -n: 1. größerer Zeitabschnitt. 2. Zeitpunkt des Standortes eines Gestirns (Astron.).
Kalendarium das; -s, ...ien: 1. Verzeichnis kirchlicher Gedenk- und Festtage. 2. [Termin-]kalender. 3. altröm. Verzeichnis von Zinsen, die am ersten des Monats fällig waren.
(aus Duden: Das Fremdwörterbuch)

 

1. Natürliche Zeiteinteilung

Die Orientierungshilfe, um sich in der unübersichtlichen Vergangenheit und der unbekannten Zukunft zurechtzufinden, ist der Kalender. Die beiden Eckpfeiler unseres - heute weltweit in Gebrauch stehenden - westlichen Kalenders sind die Einteilung in feste, sich regelmäßig wiederholende Zeitabschnitte und die Zählung dieser Abschnitte. Es sind vier natürlichen Zeitmaße die unseren Lebensrhythmus bestimmen und in unserem Kalender miteinander verknüpft werden:

  1. Das Jahr wird durch die Umlaufszeit der Erde um die (mittlere) Sonne bestimmt. Gemessen wird das Sonnenjahr anhand des zweimaligen Durchganges durch einen gewählten Fixpunkt. Man unterscheidet:

  2. Den Monat bildet die Umlaufszeit des Mondes um die Erde. Gemessen wird der synodische Monat, womit das Zeitintervall zwischen zwei aufeinanderfolgenden Neumonden bezeichnet wird. (Neumond: Mond und Sonne stehen, von der Erde aus betrachtet zusammen in einer Blickrichtung).

  3. Der Tag ist die mittlere Dauer einer Erdumdrehung. Hierbei wird unterschieden in

  4. Die Woche, das ungefähre Viertel eines Monats oder "nur" die magische Zahl Sieben? Die genaue Herkunft unserer Woche scheint im Nebel der Vergangenheit verschollen zu sein. Fakt ist, dass der bekannte Wochenrhytmus seit mehr als 2000 Jahren ununterbrochen fortgelaufen ist.

Es wäre leicht, einen Kalender aufzustellen, wenn genau ein Vielfaches eines Tages einen Monat und ein Vielfaches des Monats ein Jahr ausmachen würde. Leider ist dem aber nicht so. Tatsächlich fallen im Mittel in das tropische Jahr 365,2422 Tage und 29,5306 Tage in den synodischen Monat.

So hat es im Laufe der Geschichte in fast jeder Kultur einen anderen Kalender gegeben. In den frühen Kulturen herrschte zumeist das Mondjahr vor, welches durch die Abfolge von zwölf Monaten bestimmt wurde. Um die Übereinstimmung mit den Jahreszeiten herzustellen wurde zumeist ein Schaltmonat eingelegt. Die Ägypter hatten schon von Alters her ein Sonnenjahr, welches 365 Tage umfaßte. Zwar wurde bereits im Jahre 238 v. Chr. vom damaligen Pharao Ptolemäus III ein Schaltjahr eingeführt, aber schon sein Nachfolger schaffte es wieder ab. Erst Julius Cäsar hat diese Schaltregel wieder in seinem Kalender aufgenommen.

 

2. Julius Cäsar und der Kalender

Der römische Kalender war ursprünglich ein reiner Mondkalender. Das Jahr begann im März und zählte 304 Tage und war in 10 ungleiche Monate zu 29 und 30 Tagen eingeteilt. Bereits im 7. Jahrhundert v. Chr. (vermutlich durch Tarquinius Priscus) wurde das Jahr durch Einfügen der Monate Januar und Februar auf 355 Tage verlängert. Um im Einklang mit dem natürlichen Jahresrythmus zu bleiben, wurden alle zwei bis drei Jahre Schaltmonate eingefügt. Durch ungeordnetes Einfügen der Schaltmonate, welches auch auf die Bestechlichkeit der damaligen Priesterkaste zurückgeführt werden kann, war auch dieser Kalender im Laufe der Zeit für das bürgerliche Leben unbrauchbar geworden.

Zur Beendigung dieser Mißstände setzte Julius Cäsar den Kalender des Astronomen Sosigène aus Alexandria per Gesetz durch. Im Jahr 45 v. Chr. wurde der römische Kalender in fünf Punkten reformiert:

  1. Das normale Jahr (Gemeinjahr) sollte fortan 365 Tage haben.

  2. Auf drei Jahre mit 365 Tagen sollte ein Schaltjahr mit 366 Tagen folgen.

  3. Als Schalttag wurde der 24. Februar festgelegt, welcher dadurch eine Länge von 2 Tagen hatte.

  4. Der Jahresbeginn wurde vom 1. März (Martius) auf den 1. Januar verlegt.

  5. Die Monatslängen wurden neu festgelegt. (30 bzw. 31 Tage, 29/30 Tage im Februar).

Die Einführung des neuen Kalenders brachte ein "Konfusionsjahr" mit sich, da es galt den Jahresbeginn vom März auf den Januar – das war der Amtsantritt der Konsuln - vorverlegt. Das Jahr 46 v. Chr. hatte 455 Tage.

Auf die römische Tradition gehen auch die Monatsnamen zurück.
     
 Martius  September  
 Aprilis  Oktober
 Maius  November
 Junius  Dezember
 Quintilis  Januarius
 Sextilis  Februarius
Zu Ehren des Reformators beschloß der römische Senat die Umbennenung des Monats Quintilis (Cäsars Geburtsmonat) in Julius, zumal die bisherige Numerierung durch die Verlegung des Jahresbeginns ohnehin keinen Sinn ergab. Da der römische Kalender ein Mondkalender war, welcher circa alle drei Jahre eines Schalttages bedurfte (um mit dem Mond syncron zu laufen), wurde die Schaltregel auch im neuen Kalender zunächst in jedem dritten Jahr angewendet. Dieser Mißstand wurde von Augustus behoben, weshalb der Monat Sextilis in Augustus umbenannt wurde. Dieser Monat hat aber nur 30 Tage im Gegensatz zum Juli mit 31 Tagen! Der Februar wurde kurzerhand um einen Tag gekürzt und dieser Tag dem August hinzugefügt.

Die Genauigkeit dieses Kalenders konnte innerhalb einer Generation nicht bemängelt werden. So verhalf die militärische Macht Roms dem Kalender innerhalb kürzester Zeit zur Verbreitung in der "ganzen bekannten Welt". Aber erst das Christentum hat diesem Kalender zum wirklichen Siegeszug verholfen, mit der einzigen Änderung, dass der Beginn der Zeitrechnung von der Gründung Roms auf den vermutlichen Zeitpunkt von Christi Geburt gelegt wurde.

 

3. Der Kalender und das Christentum

3.1 Das Osterdatum

Die Bestimmung des Osterfestes war zwischen östlichen und westlichen Kirchen umstritten, gleichwohl hatte die christliche Kirche großes Interesse daran, dass das Osterfest von der gesamten Christenheit am selben Tag gefeiert wird. Des weiteren sollte Ostern seinen Bezug zu den biblischen Texten behalten. Auf dem Konzil von Nicäa (325 n.Chr.) wurde empfohlen, dass Ostern am Sonntag nach dem ersten Vollmond nach Frühlingsanfang (Tag-und-Nacht-Gleiche auf der nördlichen Halbkugel) gefeiert werden sollte. Deshalb erteilte Papst Johannes I. dem skythischen Mönch Dionysius den Geringen (Dionysios Exiguus, ca. 500 n.Chr.) den Auftrag die Ostertafeln neu zu ordnen. Dieser setzte im Jahr 525 n.Chr. die folgende Formel durch:

  1. Ostern fällt auf den ersten Sonntag nach Vollmond nach Frühlingsanfang.
  2. Der Frühlingsbeginn wird auf den 21. März, Mitternacht, festgesetzt.
  3. Es wird von einer gleichmäßigen Kreisbahn des Mond ausgegangen.
Ostern wurde somit ein bewegliches Fest zwischen dem 22. März und 25. April eines jeden Jahres. Ab dem 6. Jahrhundert wird der julianische Kalender durch sog. ewige Kalender für die Bestimmung des Osterfests ergänzt.

 

3.2 Die Bestimmung der christlichen Epoche

Zur Zeit des Abtes Dionysios Exiguus war es üblich, die Jahre des Julianischen Kalenders nach der sogenannten "Märtyrer-Ära" zu rechnen, die mit dem Amtsantritt von Diokletian im Jahre 284 n.Chr. begann. Exiguus fand es würdiger, den Verlauf der Jahre nach der Menschwerdung Christi zu bezeichnen. Er versuchte den Zeitpunkt der Geburt Christi nachträglich festzulegen. Dies war 500 Jahre später keine einfache Aufgabe. Dionysios griff auf den Zyklus des Victorius von Aquitanien zurück, der 532 Jahre betrug (Mondzyklus * Sonnenzyklus: 19 Jahre * 28 Jahre). Im Jahr 525 setzte er schließlich das 248. Jahr nach Diokletian mit dem Jahre 532 n.Chr. gleich und nannte die neugezählten Jahre anni domini nostri Jesu Christi, die Jahre unseres Herrn Jesus Christus. Die Einführung von Christi Geburt als Bezugspunkt der Jahreszählung war somit ein Nebenprodukt der Arbeit an den Ostertafeln. Diese Zählweise erlangte schon bald weite Verbreitung. Etwa ab 1000 war sie überall in Europa gebräuchlich; die Päpste benutzten sie offiziell allerdings erst ab 1431.

Bereits Johannes Kepler wies darauf hin, dass die Bestimmung fehlerhaft sei, da die Berechnung des Sterns von Bethlehem, nach geltender astronomischer Einschätzung eine enge Zusammenkunft der Planeten Jupiter und Saturn, im Jahre 7 vor Beginn unserer Zeitrechnung liegt.

 

4. Der Oktober 1582

Die Verwendung des julianischen Kalenders führte dazu, dass sich bis Mitte des 16. Jahrhunderts der Frühlingsanfang um 11 Tage in Richtung Jahresanfang verschoben hatte. Dies rückgängig zu machen und anschließend dauerhaft zu verhindern war das Ziel einer Kalenderreform. Der dabei entstandene und heute noch gültige gregorianische Kalender geht auf die Arbeiten von Aloysius Lilius (gest. 1576) und Christopher Clavius (1537 - 1612) zurück. In einer päpstlichen Bulle vom 24. Februar 1582 legte Papst Gregor XIII fest:

  1. Zehn überschüssige Tage sollten wegfallen, so dass auf Donnerstag, den 4. Oktober 1582, als nächster Tag Freitag, der 15. Oktober 1582, folgen sollte. Damit wurde der Frühlingsanfang wieder auf den 21. März geschoben.

  2. Des weiteren wurde die alte Schaltjahresregel verbessert: Die Jahre, deren Jahreszahl ohne Rest durch hundert teilbar ist, sind, abweichend von Caesars Regelung, keine Schaltjahre, es sei denn, die Jahreszahl ist durch vierhundert ohne Rest teilbar.

  3. Weiterhin enthalten die Schriften von Clavius auch Regeln für die Bestimmung des Vollmonddatums und damit auch für die Bestimmung des Osterfestdatums.

Einführungsjahr  
Frankreich  1582 
Italien  1582 
kath. Deutschland 1582 
Spanien  1582 
Dänemark  1699 
prot. Deutschland 1700 
Großbrittannien  1752 
Schweden  1753 
Japan  1873 
Ägypten  1875 
China  1912 
Rußland  1918 
Griechenland  1923 
Auf diese Weise fallen 36524,25 Tage in ein Jahrhundert, eine recht gute Näherung zum tatsächlichen Wert, so dass eine Korrektur dieses Kalenders erst nach 3333 Jahren erfolgen müßte, weil dann die Verschiebung des Frühlingsanfanges einen Tag beträgt.

Vor allem wohl, weil es unterlassen wurde auf den wissenschaftlichen Hintergrund der Kalendernovellierung hinzuweisen wurde der gregorianische Kalender zunächst nur von den katholischen Ländern eingeführt. Andere Länder ließen sich damit mehr Zeit. Im gesamten Bereich der heute Deutschland ist galt er erst ab 1700. Die Einführung in der Türkei hat bis 1927 gedauert. Daher stimmen mitunter historische Datierungen und die regionale Gegebenheit scheinbar nicht überein. So wurde die Oktoberrevulotion in der Sowjetunion "erst" im November gefeiert.

Da der gregorianische Kalender mit dem Jahr Eins nach Christi Geburt beginnt und kein Jahr Null kennt, muss bei der Berechnung von Zeitintervallen über die Geburt Christi hinaus stets ein Jahr abgezogen werden, da dem Jahr 1 n.Chr. das Jahr 1 v.Chr. vorausging. (Demzufolge beginnt das dritte Jahrtausend des gregorianischen Kalenders erst mit dem Jahreswechsel von 2000 auf 2001.)

 

5. Die Normung des Kalenders

Die Macht Roms und die Verbreitung des Christentums hat dazu geführt, dass der julianische Kalender der allgemein gültige Kalender für Europa während des gesamten Mittelalters war. Angesichts der Zersplitterung in Einzelstaaten ein kaum vorzustellender Zustand. Zwar hatte der gregorianische Kalender seine Anlaufschwierigkeiten, aber seit der Mitte dieses Jahrhunderts wird er weltweit, unabhängig der Religion, eingesetzt.

Da der Kalender so außerordentlich wichtig für das öffentliche Leben war und ist, wird es niemanden verwundern, dass sich Normungsgremien dem Kalender angenommen haben und in nationale bzw. internationale Normen überführt haben. In Deutschland wurde die DIN 1355 erstellt, welche inhaltlich der ISO/R 2015-1971 gleicht. Festgelegt wurden darin Jahreslänge, Schaltregeln, Monats- und Wochentagsnamen (inkl. Abkürzungen), die Schreibweisen für "vor Christus" und "nach Christus" sowie Jahres- und Wochenzählung. Die DIN-Norm ist dann in die europäische Norm EN 28601 überführt worden. Inhaltlich beschreiben die Normen das, was bereits in der päpstlichen Bulle von 1582 aufgeführt wurde. Sie gehen nur dann über die dort getroffenen Regelungen hinaus, wo diese ungenau ist.

 

6. Algorithmen zur Datumsberechnung

Die in den nachfolgenden Unterkapiteln aufgeführten Berechnungsalgorithmen sind als Programmierhilfe gedacht und können bei Bedarf kopiert und angepaßt werden. Eine Gewährleistung für die Korrektheit der auf dieser Seite verwendeten oder beschriebenen Algorithmen gebe ich nicht, auch wenn die Algorithmen von mir getestet wurden und ich die ausgemachten Fehler nach besten Wissen beseitigt habe. Also: Alles ist "AS IS" und Gewährleistungen und Garantien gibt es für gar nichts.

Anmerkungen zur Notation:
Zur Beschreibung der Algorithmen verwende ich die Notation von JavaScript, so dass die Algorithmen so in eine Webseite eingebaut werden könnten. In JavaScript muss die ganzahlige Division mittels der Funktion Math.floor() aus der normalen Division gebildet werden. Die Ermittlung des jeweiligen Restes einer ganzzahligen Division wird durch "%" ausgedrückt. Wertzuweisungen an eine Variable werden durch ein einfaches Gleichheitszeichen gekennzeichnet, bei Vergleichen wird das Gleichheitszeichen verdoppelt. Wichtige boolesche Operatoren sind "!" für "nicht", "||" für "oder" und "&&" für "und".

 

6.1 Die Berechnung des Schaltjahres

Die hier aufgeführte Funktion ermittelt für ein gegebenes Jahr, ob es sich dabei um ein Schaltjahr handelt. Zurückgegeben wird ein entsprechender Wahrheitswert; die Verwendung eines Integerwertes in dieser Funktion bietet den Vorteil das Ergebnis verrechnen zu können, z.B. TageFebruar := 28 + ist_Schaltjahr(jahr);

Anhand des Vergleiches mit der Zahl 1582 wird ermittelt, ob die julianische oder gregorianische Schaltregel verwendet werden muss: Nach der julianischen Regel ist jedes vierte Jahr ein Schaltjahr, und nach der gregorianischen Regel ist jedes vierte Jahr nur dann ein Schaltjahr, wenn es nicht ohne Rest durch hundert teilbar ist, es sei denn, die Jahreszahl ist durch vierhundert ohne Rest teilbar. (vgl. Der Oktober 1582 auf dieser Homepage)


 function ist_Schaltjahr(jahr) {
   if (jahr % 4 == 0)
      if (jahr < 1582)
         return 1;
      else if (!(jahr % 100 == 0))
              return 1;
           else if (jahr % 400 == 0)
                   return 1;
   return 0;
 } 

Übrigens gilt diese Schaltjahrfunktion nur für die Jahre nach Christi Geburt. Da es kein Jahr 0 gab, und daher der Vorgänger des Jahres 1 n.Chr. das Jahr 1 v.Chr. ist, ist ein Jahr vor Christigeburt dann ein Schaltjahr, wenn die ganzzahlige Division durch vier als Rest 1 ergibt. (Jahre vor Christus werden in diesen Scripten an anderer Stelle blockiert.)

 

6.2 Berechnung des Tag des Jahres

Hier werden einfach stur die Anzahl der Tage der vergangenen Monate aufsummiert und die verstrichenen Tage des gegebenen Monats hinzuaddiert. Dazu werden die jeweiligen Tageszahlen in einem Array (Feld) gespeichert. Vor der Berechnung wird die genaue Tageszahl für den Februar bestimmt (im Schaltjahr 29).


 var Monatstage = new Array
                  (31,28,31,30,31,30,31,31,30,31,30,31);
 ...
 function Tag_des_Jahres(tag,monat,jahr) {
  var Tage       = 0;

  Monatstage[1]  = 28 + ist_Schaltjahr(jahr);
  if (tag <= Monatstage[monat-1]) {
     for (var i=0; i < monat-1; i++)
         Tage = Tage + Monatstage[i];
     Tage = Tage + tag;
  }
  return Tage;
 } 

Ein besonderes Problem liegt aber im Jahr 1582 vor, weil in diesem die 10 Tage zwischen dem 4. und 15. Oktober ausgefallen sind. Um dieses Jahr auch korrekt abbilden zu können, muss eine entsprechende Ausnahme gebildet werden. Eine analoge Verfahrensweise wie im Februar ist nicht möglich, da dann Datümer ab dem 21. Oktober nicht mehr zulässig sind. Man zieht am besten am Ende der Prozedur zehn Tage ab, wenn die Tagesanzahl größer als 287 (4. Oktober 1582) ist. Bei der Rückrechnung eines Datums aus der Tageszahl muss dann entsprechend aufgepaßt werden.

 

6.3 Wochentagsberechnung

Die Berechnung des Wochentages ist prinzipiell recht einfach, wenn erst der Wochentag eines bestimmten Tages bekannt ist, können alle anderen Tage abgezählt werden. Dies ist auch das Schema hier: Zunächst wird der Wochentag für den ersten Januar bestimmt, und dann wird der gewünschte Tag "abgezählt"

 

6.3.1 Der 1. Januars eines Jahres

Die Funktion CurrentDoomDay berechnet den Wochentag des ersten Tages des Jahres. Dazu muss man wissen, dass die Wochentage des 1. Januar der Jahrhunderte im gregorianischen Kalender immer wieder gleich beginnen. Ist das Jahrhundert (die ersten beiden Stellen des Jahres) glatt durch vier teilbar, fängt es mit einem Samstag an. Ergibt sich bei der Teilung ein Rest von 1 ist es Freitag, ... (Die Zahl in CenturyDoomDay bezieht sich auf die Position in WochenTage.)


 var WochenTage = new Array
                  ("Mo","Di","Mi","Do","Fr","Sa","So");
 ...
 function CurrentDoomDay(jahr) {
   var CenturyDoomDay = new Array (5,4,2,0);
   var CC             = Math.floor(jahr/100);
   var YY             = jahr%100;
   var CCDoomDay      = CenturyDoomDay[CC%4];
   var YYDoomDay      = 0;

   if (YY == 0)
      YYDoomDay = CCDoomDay;
   else if (YY%12 == 0)
           YYDoomDay = (CCDoomDay + YY/12 - 1) % 7;
   else YYDoomDay = ( CCDoomDay
                     + (Math.floor(YY/12)
                     + (YY%12)
                     + Math.floor(((YY-1)%12)/4))
                    ) % 7;
   if ((CC%4 == 0) && (YY != 0))
      YYDoomDay = YYDoomDay + 1;

   return YYDoomDay;
 } 

Interessanterweise erhöhen sich die Wochentage eines Datums nach zwölf Jahren um eines, also ist der 12. März 1958 ein Mittwoch und der 12. März 1970 ein Donnerstag. Es ergibt sich also für den 1. Januar eines beliebigen Jahres: Wie oft hat sich seit Beginn des Jahrhunderts der Wochentag um eins verschoben (ganzahliges Teilen durch 12) und um wieviel Resttage verschiebt es sich weiter? Bei den Resttagen ist es wichtig, zu wissen wieviel Schaltjahre darin sind, also durch 4. Diese drei Zahlen aufaddiert und durch sieben geteilt, ergibt der Rest die Verschiebung des Wochentages seit Beginn des Jahrhunderts. (vgl. Doomsday Algorithm) Dies abgebildet auf die WochenTage wird zurückgegeben.

Leider hatte sich in meinem ursprünglichen Algorithmus ein Fehler eingeschlichen, der aber von Sven Schottke erkannt und auch behoben werden konnte. Hier jetzt also die korrigierte Version.

 

 

6.3.2 Ein beliebiger Tag im Jahr


 var WochenTage = new Array
                  ("Mo","Di","Mi","Do","Fr","Sa","So");
 ...
 function Wochentag(tag,monat,jahr) {
   var WchTag1Jan = CurrentDoomDay(jahr);
   var Tage       = Tag_des_Jahres(tag,monat,jahr) - 1;
   var Wochentag  = (WchTag1Jan+(Tage%7))%7;

   return WochenTage[Wochentag];
 } 

Wenn der Wochentag des ersten Januars eine Jahres erst bekannt ist (CurrentDoomDay), dann ist die Ermittlung des Wochentages eines beliebigen Tages des Jahres einfach. Dazu wird zunächst die Tageszahl für das Datum berechnet. Wenn man die Vielfachen von 7 daraus weg läßt, ergibt sich die Verschiebung zum 1. Januar. Dieses brauch dann nur noch auf unser bereits bekanntes WochenTage-Feld abgebildet werden.

Eine andere Art den Wochentag zu bestimmen, ergibt sich über die julianische Tageszahl Da diese als Tag Null Montag, den 1. Januar 4713 n.Chr. angibt, ergibt der Rest der ganzzahligen Division des julianischen Tages mit sieben den jeweiligen Wochentag.

Anmerkung: Der bisher hierfür gemeldete Fehler, resultiert aus einem Fehler in der Berechnung des Wochentages des 1. Januars des aktuellen Jahres. Der Fehler steckte also nicht in dieser Prozedur, sondern in CurrentDoomDay. Zu dem Fehler ist es gekommen, weil die Übernahme des Doomsday-Algorithmus eine Korrektur verlangt, wenn nicht der letzte des Februars sondern der erste Januar als Doomsday benutzt wird. Hierdurch verschiebt sich nämlich die zwölfer Periode innerhalb des Jahrhunderts.

 

6.4 Die Bestimmung der Kalenderwoche

Prinzipiell könnte man die zugehörige Kalenderwoche zu einem Datum berechnen, indem man ermittelt um welchen Tag des Jahres es sich handelt und diesen dann durch sieben teilt. Eine Kalenderwoche beginnt aber laut der DIN 1355 - Zeit immer Montags, so dass hierzu zunächst bestimmt werden muss, wann die erste Woche des Jahres beginnt.


 function Kalenderwoche(tag,monat,jahr) {
   var Woche      = 0;
   var Wchtag1Jan = CurrentDoomDay(jahr);
   var Tage       = Tag_des_Jahres(tag,monat,jahr)-1;

   if (Wchtag1Jan > 3)
      Tage = Tage - (7 - Wchtag1Jan);
   else Tage = Tage + Wchtag1Jan;

   if (Tage < 0)
      if (   (Wchtag1Jan == 4)
          || (CurrentDoomDay(jahr-1) == 3))
         Woche = 53;
      else Woche = 52;
   else Woche = Math.floor(Tage/7) + 1;

   if ((Tage > 360) && (Woche > 52)) {
      if (Wchtag1Jan == 3)
          Woche = 53;
      else if (CurrentDoomDay(jahr+1) == 4)
              Woche = 53;
           else Woche = 1;
   }

   return Woche;
 } 

Dieser Algorithmus berechnet zunächst den Jahrestag des Datums, und dann wird die Tagesanzahl so korrigiert, dass beginnend vom ersten Montag des Jahres gerechnet wird. Dies funktioniert gut für 51 Wochen des Jahres, Probleme bereiten die ersten und die letzten Tage des Jahres. Sofern eine negative Tageszahl ermittelt wurde, liegen die ersten Tage eines Jahres in der letzten Woche des Vorjahres. Dabei muss berücksichtigt werden, dass ein Jahr eine 53. Woche hat, wenn es mit einem Donnerstag beginnt oder endet. Genauso muss für die letzten Tages des Jahres bestimmt werden, ob sie in der letzten Woche des aktuellen Jahres liegt, oder aber bereits in der ersten Woche des Folgejahres.

 

6.5 Die Osterfeiertage

Zur Berechnung des Osterfeiertages können Tabellen herangezogen werden, oder aber die Formeln von Carl Friedrich Gauß. Die Herleitung dieser Formeln ist nicht trivial. Daher habe ich mich darauf verlassen, dass die Darstellung bei Werner Nüssler die richtigen Ergebnisse liefert. Zur Probe habe ich einige Osterfeiertage berechnet und mit eine Tabelle der Osterfeiertage verglichen. Ich gestehe ganz ehrlich: Ich weiß zwar nicht warum, aber die Berechnung der Termine funktioniert. Allerdings nur für die Osterfeste im gregorianischen Kalender [erweitert am 17. 1. 2001].


 function Ostersonntag(jahr) {
   var K  = Math.floor(jahr/100);
   if (jahr > 1582) {
      var M  = 15 + Math.floor((3*K + 3)/ 4)
                  - Math.floor((8*K +13)/25);
      var S  =  2 - Math.floor((3*K + 3)/ 4);
   } else {
      var M  = 15;
      var S  =  0;
   }
   var A  = jahr % 19;
   var D  = (19*A +M) % 30;
   var R  = Math.floor((D + A/11)/29);
   var OG = 21 + D - R;
   var SZ = 7 - ((jahr+Math.floor(jahr/4)+S) % 7);
   var OE = 7 - ((OG-SZ)%7);

   return (OG+OE);
 }

 function Feiertage(jahr) {
   var i = 0;
   var l_day   = 0;
   var l_month = 0;
   var tdj     = 0;
   var OS      = Ostersonntag(jahr);

   l_tdj = Tag_des_Jahres(1,3,jahr)-1 + OS;
   while (l_tdj > 0) {
          l_tdj = l_tdj - Tage_pro_Monat[i];
          i++;
   }
   l_month = i;
   l_day   = Tage_pro_Monat[i-1] + l_tdj;
   if (l_tdj > 0)
       l_day = l_day + 1;

   document.ostern.dd.value = l_day;
   document.ostern.mm.value = l_month;

   return;
 }

Die Funktion Osterfeiertag bildet die gausschen Formeln ab, in einer Form die der Berechnung mittels Computer dienlicher ist. Der zurückgegebene Wert entspricht der Anzahl Tage, ab Anfang März, bis zum Osterfeiertag. Der 32. Tag entspricht dann dem 1. April usw. Die Funktion Feiertage bildet nun den erhaltenen Wert wieder auf den Kalender ab und füllt die Felder in der HTML-Seite.

Anhand des Ostertermins lassen sich weitere besondere Kalender- und Feiertage berechnen: 46 Tage vor Ostern ist Aschermittwoch. 39 Tage nach Ostern ist Himmelfahrt, 49 Tage nach Ostern ist Pfingsten und 60 Tage nach Ostern ist Fronleichnam.

Anmerkung: Dr. Heiner Lichtenberg, der Autor der Korrekturen an der Gaußschen Osterformel, hat mich darauf hingewiesen, dass die Formel auch den Ostersonntag für den Julianischen Kalender berechnet, wenn M konstant auf 15 und S konstant auf 0 gesetzt wird. (So geschehen 17. 1. 2001. Vielen Dank.)

Die Arbeit von Dr. Lichtenberg mit dem Titel "Zur Interpretation der Gaußschen Osterformel und ihrer Ausnahmeregeln" ist zu finden in der (US-amerikanischen, wissenschaflichen) Zeitschrift "Historia Mathematica" Band 24 (1997). In (fast) allen mathematischen Hochschulbibliotheken kann die HM eingesehen werden. Eine Kurzfassung findet man unter der Netzadressse: (www.idealibrary.com/links/doi/10.1006/hmat.1997.2170) Hintergründe (ohne mathematische Exerzitien) stehen im Sonderheft 5 der Zeitschrift Sterne und Weltraum (www.mpia-hd.mpg.de/suw/suw), die im März 2000 erschienen ist. Eine neue (verbesserte) Fassung erschien unter dem Titel: Das anpaßbar zyklische, solilunare Zeitzählungssystem des gregorianischen Kalenders, Ein wissenschaftliches Meisterwerk der späten Renaissance in den "Mathematischen Semesterberichten", Band 50 (2003), S. 45 - 76.

 

6.6 Der julianische Tag

Das julianische Datum bezeichnet einen Tag in der julianischen Periode. Diese Periode wurde von Joseph Justus Scaliger ermittelt und umfaßt 7980 Jahre. Die Periode beginnt am 1. Januar 4713 v.Chr. (Astronomisch: -4712), übrigens ein Montag. Beginnend von diesem Tag werden die Tage durchnumeriert. Auf der Basis dieser Periode lassen sich Datümer unterschiedlicher Kalendersysteme ineinander umrechnen, wobei ich bisher kein Beispiel gefunden habe.


 function JulianDayNumber(tag,monat,jahr) {
   var MJDN = 0; /* Modified Julian Day Number */
   var B    = 0;

   if (is_greg_Date(tag,monat,jahr))
      B =  Math.floor(jahr/400)
         - Math.floor(jahr/100)
         + Math.floor(jahr/4);
   else
      B = Math.floor((jahr+4716)/4) - 1181;

   if (monat <= 2) {
      B = B - ist_Schaltjahr(jahr);
      jahr  = jahr - 1;
      monat = monat + 13;
   }
   else monat = monat + 1;

   MJDN =  (365*jahr) - 679004 + B
         + Math.floor(30.6*monat) + tag;

   return (MJDN + 2400001);
 } 

Durch die Historie unseres Kalenders (vgl. Kapitel 1 bis 4 auf dieser Homepage) ist die Umrechnung eines Datums in den julianischen Tag nicht ganz trivial. In der Tat habe ich lange im Internet gesucht, bis ich die Formel aus der Sammlung von Rolf Pfister zur Berechnung des julianischen Datums gefunden hatte (pciwww.unizh.ch/pci/pfister/formelsammlung.epl), welche ich auch interpretieren konnte. Die Funktion is_greg_Date ermittelt lediglich, ob das zu berechnende Datum vor dem 15. Oktober 1582 liegt oder danach.

Der Begriff "Julianisches Datum" wird häufig auch verwendet für die Numerierung des Tages im laufenden Jahr (vgl. Tag des Jahres). Die fortlaufende Numerierung einer Zeiteinheit innerhalb einer Periode oder ab einem bestimmten Zeitpunkt findet sich in der Informatik immer wieder. So werden Zeiten und Datümer von Betriebssystemen intern häufig in Form von Sekunden seit dem 1. 1. 1970 (Unix Epoch Time) oder dem 4. 1. 1980 (DOS) abgebildet.

 

Anhang:

  1. Weitere Datumsalgorithmen
    1. Differenzen von Datümern
    2. Altersberechnung
    3. Der verstrichene Termin

  2. Begriffslexikon

 

A. Weitere Datumsalgorithmen

Die nachfolgend aufgeführten Berechnungsalgorithmen sind - wie bereits in Kapitel 6 - als Programmierhilfe gedacht und können bei Bedarf kopiert und angepaßt werden. Eine Gewährleistung für die Korrektheit der hier verwendeten oder beschriebenen Algorithmen wird nicht gegeben, auch wenn die Algorithmen von mir getestet wurden und ich die ausgemachten Fehler nach besten Wissen beseitigt habe. Also: Alles ist "AS IS" und Gewährleistungen und Garantien gibt es für gar nichts.

Anmerkungen zur Notation vergleiche Kapitel 6.

 

a. Datumsdifferenzen

Nachdem eine Reihe von Algorithmen zur Berechnung einzelner Datümer oder Eigenschaften vorgestellt worden sind, soll hier noch eine Prozedur zur Berechnung von Differenzen erläutert werden. Grundsätzlich lassen sich zwei Formen unterscheiden: Zum Einen die direkte Rechnung über Tag, Monat und Jahr und zum Anderen die vielleicht elegantere Umrechnung über den Julianischen Tag. Für die erste Form sind die erforderlichen Grundalgorithmen bereits vorgestellt worden, bis auf die Berechnung der Anzahl der Tage eines Jahres:


 function Tage_pro_Jahr(jahr) {
    return 365 + ist_Schaltjahr(jahr);
 } 

Das ist nun wirklich eine banale Funktion, aber wenn sie oft benötigt wird, ist es sinnvoll sie in dieser Form zu erstellen. Somit sind jetzt alle notwendigen Funktionen vorhanden, um die Differenz zwischen zwei Datümern auf der Basis Tag / Monat / Jahr zu berechnen.


 function Tage_von_bis(a_tag,a_monat,a_jahr,b_tag,b_monat,b_jahr) {
    var anz    = 0;
    var a_Tage = Tag_des_Jahres(a_tag,a_monat,a_jahr);
    var b_Tage = Tag_des_Jahres(b_tag,b_monat,b_jahr);

    if ((a_jahr > b_jahr) || ((a_jahr == b_jahr) && (a_Tage > b_Tage))) {
       c_tag = a_tag; c_monat = a_monat; c_jahr = a_jahr;
       a_tag = b_tag; a_monat = b_monat; a_jahr = b_jahr;
       b_tag = c_tag; b_monat = c_monat; b_jahr = c_jahr;
    }

    if (a_jahr == b_jahr)
       anz = b_Tage - a_Tage;
    else {
       anz = Tage_pro_Jahr(a_jahr) - a_Tage;
       jahr = a_jahr + 1;
       while (jahr < b_jahr) {
          anz = anz + Tage_pro_Jahr(jahr);
          jahr++;
       }
       anz = anz + b_Tage;
    }
    return anz;
 } 

Problematisch bei der Berechnung der Differenz ist die Frage: Gehören die Grenztage zur Differenz hinzu oder nicht? Rein rechnerisch ist die Differenz von 5 und 7 gleich 2. Aber wieviel Tage sind es vom 5. eines Monats bis zum 7.? Sind es zwei Tage oder sind es drei, da der 5. sowie der 7. erst einmal vorbei sein müssen? Bei den vorgestellten Algorithmen wurde die "rein rechnerische" Variante gewählt. Wem die andere(n) besser gefällt, muss entsprechend korrigieren.

 

b. Altersberechnung

Wer das Profil einer Person auf seinen Webseiten darstellt, der möchte nicht immer die Seite erneuern, wenn die Person ein Jahr älter geworden ist. Hierfür bietet es sich dann an, das Alter zu berechnen und dynamisch auf der Seite auszugeben. Dazu wird zunächst das aktuelle Datum ermittelt, welches auf dem lokalen Rechner (!) eingestellt ist. Dann bestimmt man, ob der Geburtstag bereits gewesen ist oder noch kommt; hierdurch wird das Jahr korrigiert. Die Differenz des korrigierten aktuellen Jahres und dem Geburtsjahr ergibt dann das Alter.


 var dat = new Date(); /* Ermittelt das aktuelle Datum */

 function Alter(GebTag,GebMonat,GebJahr) {
    var jahr  = current_year();
    var monat = dat.getMonth() + 1;
    var tag   = dat.getDate();

    if (monat < GebMonat)
       jahr = jahr-1;
    else if ((monat == GebMonat) && (tag < GebTag))
             jahr = jahr-1;
    return(jahr-GebJahr);
 } 

Auf einer Webseite kann das Alter dann mit document.write(Alter(12,3,1958)); ausgegeben werden: (Das ganze funktioniert allerdings nur wenn der Browser auch JavaScript ausführt.)

 

c. Der verstrichene Termin

Wie peinlich kann es sein, nicht an einen Termin gedacht zu haben. Auf einer Webseite kann es auch peinlich sein an einen Termin zu erinnern, obwohl dieser bereits verstrichen ist. Der hier vorgestellt Algorithmus löst diese Problem, indem anhand des lokalen Datums berechnet wird, ob ein gegebenes Datum bereits überschritten ist oder nicht. Auch hierzu wird zunächst das aktuelle Datum ermittelt, um dann festzustellen ob es bereits nach dem gewünschten Termin liegt.


 var dat = new Date(); /* Ermittelt das aktuelle Datum */

 function verstrichen(a_tag,a_monat,a_jahr) {
    var b_tag   = dat.getDate();
    var b_monat = dat.getMonth()+1;
    var b_jahr  = current_year();

    if (a_jahr > b_jahr)
       return false;
    else if ((a_jahr == b_jahr) && (a_monat > b_monat))
            return false;
         else if ((a_jahr == b_jahr) && (a_monat == b_monat) && (a_tag > b_tag))
            return false;

    return true;
 }  

Abhängig vom Ergebnis dieser Funktion kann dann wiederum ein Veranstaltungshinweis auf einer Seite wiedergegeben werden oder nicht.

 

B. Begriffslexikon

Das anomalistisches Jahr
dauert 365 Tage, 6 Stunden, 13 Minuten und 53 Sekungen. Dies ist die Zeitspanne, den die Erde für einen Umlauf um die Sonne benötigt. Gemessen wird dabei anhand des sonnennächsten Punktes (Perihel) bestimmt.

Das Äquinoktium
ist die Tagundnachtgleiche, um den 21. März und 21. September eines Jahres.

Ära die;
Ären: 1. längerer durch etw. Bestimmtes gekennzeichneter, geprägter Zeitabschnitt. 2. (Geol.) Erdzeitalter

Chronologie
1. Wissenschaft und Lehre von der Zeitmessung und -rechnung 2. Zeitrechnung. 3. zeitliche Abfolge (von Ereignissen).

Epakte die;
ist das Alter des Mondes am Neujahrstag, vom Neulicht (1. Tag des Mondzyklusses) an gerechnet.

Epoche die;
[gr.mlat.; "das Anhalten (in der Zeit)"] die; -, -n: 1. größerer Zeitabschnitt. 2. Zeitpunkt des Standortes eines Gestirns (Astron.).

Goldene Zahl die;
ist das Jahr im Mondzirkel des aktuellen Jahres. Der Jahre im Mondzirkel werden von 1 bis 19 durchnumeriert. Die allgemeine Formel für die goldene Zahl (GZ) lautet: GZ = (aktuelles Jahr + 1) / 19

Julianisches Datum das;
bezeichnet einen Tag in der Julianischen Periode. Diese Periode wurde von Joseph Justus Scaliger ermittelt und umfaßt 7980 Jahre. Die Periode beginnt am 1. Januar 4713 v.Chr. (Astronomisch: -4712). Beginnend von diesem Tag werden die Tage durchnumeriert.

Kalendarium das;
-s, ...ien: 1. Verzeichnis kirchlicher Gedenk- und Festtage. 2. [Termin-]kalender. 3. altröm. Verzeichnis von Zinsen, die am ersten des Monats fällig waren.

Der Kalender
ist ein System der Zeiteinteilung und wurde eingeführt, um die Länge der Jahreszeiten und damit die Feldarbeit besser einteilen zu können. Man orientierte sich entweder am Sonnenzyklus, nach dem unsere heutiger Kalender erstellt ist oder nach dem Mondzyklus, wie dies im islamischen Kalender der Fall ist. Zudem gibt es den lunisolaren Kalender, welcher Merkmale von beiden Systemen aufweist (z.B. jüdischer Kalender).

Das Perihel
ist der Punkt einer Planeten- oder Kometenbahn, der der Sonne am nächsten liegt.

Septuagesimae
Mit dem Sonntag Septuagesimae beginnt die 70-tägige Vorfastenzeit. Die Zählweise ist heute nicht mehr ohne weiteres nachzuvollziehen, es fehlt eine ganze Woche. Insbesondere beim Sexuagesimae (dem 60. Tag) kann dies nicht mehr erklärt werden.

Sexagesima
[mittellat. "der sechzigste (Tag)"], bis 1969 Name des achten Sonntags vor Ostern. Mit dem Sonntag Septuagesimae beginnt die 70-tägige Vorfastenzeit. Die Zählweise ist heute nicht mehr ohne weiteres nachzuvollziehen, es fehlt eine ganze Woche. Insbesondere beim Sexuagesimae (dem 60. Tag) kann dies nicht mehr erklärt werden, vermutlich heißt er so, weil er zwischen Quinquagesimae und Septuagesimae liegt.

Ein siderisches Jahr
dauert 365 Tage, 6 Stunden, 9 Minuten und 10 Sekunden. Dies ist die Zeitspanne, den die Erde für einen Umlauf um die Sonne benötigt. Gemessen wird dies anhand der Zenitstände weit entfernter Sterne, von denen man annehmen kann, dass ihre Lichtstrahlen quasi parallel auf die Erde einfallen.

Solstitium, auch Solstiz
bezeichnet eine Sonnenwende, die Sommersonnenwende um den 21. Juni und die Wintersonnenwende um den 21. Dezember.

Der Sonnentag
ist als jene Zeit definiert, die die Erde für eine vollständige Rotation, gemessen am Durchgang der Sonne durch einen bestimmten Meridian, benötigt und beträgt 24 Stunden. Die Differenz von 4 Minuten zum Sternentag entsteht durch den Weg, den die Erde innerhalb dieser Zeit zurücklegt. Dieser zusätzliche Winkelgrad macht eben diese 4 Minuten aus.

Der Sternentag
ist als jene Zeit definiert, die die Erde für eine vollständige Rotation benötigt und beträgt 23 Stunden, 56 Minuten und 4 Sekunden. Gemessen wird dies anhand weit entfernter Sterne, von denen man annehmen kann, dass deren Lichtstrahlen quasi parallel auf die Erde einfallen.

Ein tropisches Jahr
dauert 365 Tage, 5 Stunden, 48 Minuten und 46 Sekungen. Dies ist die Zeitspanne, den die Erde für einen Umlauf um die Sonne benötigt. Gemessen wird dabei die Zeit zwischen zwei Frühlingspunkten, also den Zenitständen im Frühjahr.

 

Bücher
Coyne, G. V., Hoskin, M. A., Pedersen, O. (Hrsg.):
The Gregorian Reform of the Calendar, Proceedings of the Vatican conference to commemorate its 400th anniversary 1582-1982, Vatikan-Stadt 1983
Lichtenberg, H., Gerhards, L., Graßl, A., Zemanek, H.:
Die Struktur des Gregorianischen Kalenders, Sterne und Weltraum 37 (1998), S. 326 - 332 und dort zitierte Publikationen.
Lichtenberg, H.:
Zur Interpretation der Gaußschen Osterformel und ihrer Ausnahmeregeln, Historia Mathematica, Band 24 (1997), S. 441 - 444. (Kurzfassung: www.idealibrary.com/links/doi/10.1006/hmat.1997.2170)
Zemanek, H.:
Kalender und Chronologie, 5., verbesserte Auflage, München, Wien: Oldenbourg Verlag, 1990, vergriffen

 

Fußnoten:
[1] Das Plural von Datum ist laut Duden Daten und nicht Datümer. In der Informatik wird sprachlich jedoch häufig "Datümer" benutzt, um Datenfelder die Daten enthalten leichter von denen unterscheiden zu können in denen die Dateninhalte ein Datum beinhalten.

 

Verweise
 
download kalender.zip
Um das Kalenderwesen auch Offline zu erleben und durchstöbern zu können, sind hier alle Dateien im HTML-Format gepackt zum Herunterladen: (68 KB)

... nach draußen:
Guido Büsch: Uhrzeit ... (home.snafu.de/gb.sl/index00/zeit.htm)
Joachim W. Ekrutt: Der Kalender im Wandel der Zeiten (www.geocities.com/CapitolHill/Lobby/2554/index.html)
Linda Hofer: Die Zeit (members.vol.at/roemer/renw/nw_026.htm)
Thomas Hofmann: Kalender (www.iivs.de/buchbach/buerger/tommyhof/index.html)
Thorsten Krieger: Unsere Zeitrechnung (home.t-online.de/home/thorsten.krieger/exkurs.htm)
Herbert Metz: Kalender - Computus (www.computus.de)
Peter Meyer: Julian Day Numbers (www.magnet.ch/serendipity/hermetic/cal_stud/jdn.htm)
Rolf Pfister: Rolf's Formelsammlung (pciwww.unizh.ch/pci/pfister/formelsammlung.epl)
Astronomisches Kalenderwesen (www.maa.mhn.de/Scholar/dt_calendar.html)
DIN 1355 - Zeit (www.engelschall.com/~sb/download/Date-Calc/DIN1355)
Doomsday Algorithm for Day of the Week (rudy.ca/doomsday.html)
Einführung in die Chronologie (www.koenigsmuenster.de/rsk/einfuehrung.htm)
Wissenswertes zur Zeit (www.ptb.de/de/blickpunkt/_infoszurzeit.html)
The Julian Period (www.pauahtun.org/julian_period.html)
(Ich bin nicht verantwortlich für Inhalte externer Internetseiten.)
 

[Seitenanfang] geändert: 05.02.2004 by hgm © 1999, Hans-G. Mekelburg, all rights reserved.
[ impressum |; datenschutz | haftungsausschluss ]