Die Wochentagsformel als Funktion

Die Wochentagsformel auf Kalenderrechnen.de ist tatsächlich keine Formel wie man sie aus der Mathematik kennt, sondern ein Algorithmus — also ein Verfahren, das aus mehreren Schritten hintereinander besteht. Eine „richtige“ Formel (auch Funktion genannt), bildet jedoch in einem Schritt ein Element aus dem Definitionsbereich auf den zugehörigen Wert im Wertebereich ab. Dabei umfasst der Definitionsbereich alle gültigen Kalenderdaten und der Wertebereich die sieben Wochentage

In Funktionsschreibweise könnte man die Wochentagsformel wie folgt angeben:

Schaltjahr(JJJJ) := wenn ((JJJJ < 1582) und (JJJJ mod 4 = 0)) oder ((JJJJ > 1582) und ((JJJJ mod 400 = 0) oder ((JJJJ mod 4 = 0) und JJJJ mod 100 ≠ 0))) dann „SCHALTJAHR“, ansonsten „KEIN_SCHALTJAHR“.

Datum_Gültig(TT, MM, JJJJ) := wenn ((1 ≦ TT ≦ 28) oder (MM ∈ {02} und 1 ≦ TT ≦ 29 und Schaltjahr(JJJJ) = „SCHALTJAHR“) oder (MM ∈ {04, 06, 09, 11} und 1 ≦ TT ≦ 30) oder (MM ∈ {01, 03, 05, 07, 08, 10, 12} und 1 ≦ TT ≦ 31) und (JJJJ ≠ 1582 oder MM ≠ 10 oder TT < 5 oder TT > 14)) dann „GÜLTIG“, ansonsten „UNGÜLTIG“.

Wochentagsziffer(TT, MM, JJJJ) := (TT + (wenn (MM ∈ {01, 10}) dann 1, ansonsten wenn (MM = 05) dann 2, ansonsten wenn (MM = 8) dann 3, ansonsten wenn (MM ∈ {02, 03, 11}) dann 4, ansonsten wenn (MM = 06) dann 5, ansonsten wenn (MM ∈ {09, 12}) dann 6) + (JJJJ mod 100) div 12 + (JJJJ mod 100) mod 12 + ((JJJJ mod 100) mod 12) div 4 + wenn(JJJJ < 1582 oder (JJJJ = 1582 und (MM < 10 oder (MM = 10 und TT < 5)))) dann (wenn (JJJJ div 100) mod 7 = 0 dann 4, ansonsten wenn (JJJJ div 100) mod 7 = 1 dann 3, ansonsten wenn (JJJJ div 100) mod 7 = 2 dann 2, ansonsten wenn (JJJJ div 100) mod 7 = 3 dann 1, ansonsten wenn (JJJJ div 100) mod 7 = 5 dann 6, ansonsten wenn (JJJJ div 100) mod 7 = 6 dann 5), ansonsten (wenn (JJJJ mod 4 = 0) dann 6, ansonsten wenn (JJJJ mod 4 = 1) dann 4, ansonsten wenn (JJJJ mod 4 = 2) dann 2) + wenn (Schaltjahr(JJJJ) = „SCHALTJAHR“ und MM ≦ 2) dann 1) mod 7.

Wochentag(TT, MM, JJJJ) := wenn(Datum_Gültig(TT, MM, JJJJ) = „GÜLTIG“ und wenn (Wochentagsziffer(TT, MM, JJJJ) = 0) dann „Samstag“, ansonsten wenn (Wochentagsziffer(TT, MM, JJJJ) = 1) dann „Sonntag“, ansonsten wenn (Wochentagsziffer(TT, MM, JJJJ) = 2) dann „Montag“, ansonsten wenn (Wochentagsziffer(TT, MM, JJJJ) = 3) dann „Dienstag“, ansonsten wenn (Wochentagsziffer(TT, MM, JJJJ) = 4) dann „Mittwoch“, ansonsten wenn (Wochentagsziffer(TT, MM, JJJJ) = 5) dann „Donnerstag“, ansonsten wenn (Wochentagsziffer(TT, MM, JJJJ) = 6) dann „Freitag“, ansonsten „DATUM_UNGÜLTIG“.

Dabei bezeichne div die ganzzahlige Division ohne Rest und mod den Rest der Division.

Du kannst dir diese Formel gerne abspeichern oder sie abschreiben bzw. ausdrucken. Dann hast du immer die passende Antwort parat, solltest du erklären müssen, wie Kalenderrechnen funktioniert 😉

Schreibe einen Kommentar