Kalenderrechnen

Welcher Wochentag war der 24. Dezemeber 2007? Mit etwas Übung lässt sich diese Frage innert Sekunden beantworten.

Dazu benötigen wir zwei Tabellen:

Die Monatstabelle

Januar +0
Februar +3
März +3
April +6
Mai +1
Juni +4
Juli +6
August +2
September +5
Oktober +0
November +3
Dezember +5

Die Jahrestablle

2013 +1
2012 +0 (SJ)
2011 +5
2010 +4
2009 +3
2008 +2 (SJ)
2007 +0
2006 +6
2005 +5
2004 +4 (SJ)

Da in einem Schaltjahr (SJ) der Schalttag erst am 29. Februar ist, muss für die Monate Januar und Februar noch ein Tag abgezogen werden (-1).

Der Algorithmus für die Berechnung des Wochentages geht nun folgendermassen:

  1. Setze Zähler auf 0:
    i=0
  2. Überprüfe Jahr, addiere Zahl zu Zähler:
    i=i+Jahr
  3. Falls Schaltjahr und Monat kleiner als 3, subtrahiere -1:
    i =i-1
  4. Überprüfe Monat, addiere Zahl zu Zähler:
    i=i+Monat
  5. Überprüfe Tag, addiere Zahl zu Zähler:
    i=i+Tag
  6. Rechen Modulo 7:
    i=i \pmod 7
  7. Das Resultat ist der Wochentag, also
    i==1 -> Montag
    i==2 -> Dienstag
    etc

Am Beispiel vom 24. Dezember 2007 ergibt dies folgende Rechnung:

  1. i=0
  2. i=0
  3. i=0
  4. i=5
  5. i=29
  6. i=1
  7. Montag

Erweiterung

Der ambitioniert Rechner will gerne alle Daten der letzten Jahrhunderte kenne, die ganze Tabelle auswendig zu lernen ist daher idiotisch.

Zuerts kurz noch zu Schaltjahre:
Schaltjahre finden alle 4 Jahre statt. Alle hundert Jahre (…,1500, 1700, 1800, 1900, 2100, …) fällt es aus, alle 400 Jahre (…, 1200, 1600, 2000, …) findet es trotzdem statt.

Beginnen wir im Jahr 1901, so müssen wir für die nächsten 200 Jahre nur die 4 Jahres Schaltjahrregel berücksichtigen.

Der 1. Januar 1901 war glücklicherweise ein Dienstag – somit ist

1901 +1

Wir rechnen nun also

    \[ \left( Jahr - 1900 + \left\lfloor \frac{Jahr - 1900}{4} \right\rfloor \right) \pmod 7 \]

und erhalten die + Zahl für das jeweilige Jahr.

Am Beispiel von 2007 erhalten wir:

  1. 2007-1900 = 107
  2. \left\lfloor \frac{107}{4} \right\rfloor = 26
  3. 107+26=133
  4. 133 \pmod 7 = 0

Soeben entdecke ich den ausführlichen Wikipediaartikel: Wochentagsberechnung

Ein Gedanke zu „Kalenderrechnen

  1. Hallo,….
    ich denke das diese Methode nicht sehr schnell ist, das zurückrechnen verbraucht zuviel Zeit.
    Bitte meine entwickelte Theorie ansehen!!!

    Wochentage.wordpress.com
    Man kann mich auch Googln (Wochentage berechnen)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert