
Ein ewiger Kalender soll über viele Jahre hinweg das richtige Datum anzeigen, ohne dass man bei Monatswechseln oder in Schaltjahren nachhelfen muss. Möglich wird das durch eine fein abgestimmte Schaltlogik, die den Rhythmus von Monaten mit 30 und 31 Tagen sowie den Sonderfall Februar korrekt verarbeitet.
Im Kern steht die Frage, wie ein Mechanismus „weiß“, wann ein zusätzlicher Tag einzufügen ist. Die Antwort liegt in einer festen Abfolge von Schaltvorgängen, die das 4‑Jahres‑Muster der Schaltjahre abbildet und zugleich die unterschiedlichen Monatslängen in eine zuverlässige Schrittfolge übersetzt.
Diese Schaltlogik ist nicht nur eine technische Lösung, sondern auch ein Stück angewandter Kalenderregeln: Sie verbindet Mathematik, Normen und Mechanik zu einem Ablauf, der Tag für Tag im Hintergrund arbeitet. Wer versteht, wie die Schaltungen gesetzt werden, erkennt auch, warum bestimmte Konstruktionen Grenzen haben und wie Feinheiten wie der Februar behandelt werden.
Schaltjahr-Regeln umsetzen: 4er-/100er-/400er-Prüfung und Sonderfälle
Für einen Ewigen Kalender muss die Schaltlogik die Gregorianische Regel exakt abbilden: Ein Jahr erhält einen Zusatztag, wenn es durch 4 teilbar ist, außer es ist durch 100 teilbar; dann fällt der Zusatztag weg, außer das Jahr ist durch 400 teilbar, dann gilt er wieder.
Algorithmisch lässt sich das als Kette von Teilbarkeitsprüfungen formulieren, die deterministisch ist und ohne Datumsbibliotheken auskommt. Zuerst wird die 400er-Regel geprüft, danach die 100er-Regel, zuletzt die 4er-Regel; so entstehen keine Mehrdeutigkeiten, und die Sonderbehandlung der Jahrhundertjahre ist sauber abgegrenzt.
Prüfreihenfolge und Bool-Formel
Eine kompakte Form lautet: schalt = (jahr % 400 == 0) || (jahr % 4 == 0 && jahr % 100 != 0). Damit sind 2000 und 2400 Schaltjahre, 1900 und 2100 keine; 1996 ist eines, 1999 nicht.
Bei der Umsetzung lohnt sich ein Blick auf die Eingabedomäne: Manche Systeme erlauben Jahr 0 oder negative Jahre, andere nicht. Falls Jahre außerhalb der historischen Gregorianik verarbeitet werden sollen, muss klar sein, ob die Regeln proleptisch gelten oder ob ein Kalenderwechsel (z. B. 1582) modelliert wird; ohne diese Festlegung liefert die Schaltprüfung zwar ein Ergebnis, aber nicht zwingend das gewünschte.
Sonderfälle in der Praxis
Ein häufiger Stolperstein sind Jahrhundertgrenzen: 1800, 1900, 2100 wirken auf den ersten Blick „durch 4 teilbar“, sind aber wegen der 100er-Regel keine Schaltjahre; nur bei 1600, 2000, 2400 greift die 400er-Ausnahme. Für Tests sollten solche Grenzjahre explizit als Prüfpunkte aufgenommen werden, weil sie Fehler in verketteten Bedingungen schnell sichtbar machen.
Auch die Einbettung in eine vollständige Datumslogik ist relevant: Der Zusatztag existiert nur im Februar, daher müssen Monatslängen dynamisch ermittelt werden (Februar = schalt ? 29 : 28), während alle anderen Monate konstant bleiben. Bei Berechnungen von Wochentagen oder fortlaufenden Tagesnummern sollte die Schaltentscheidung früh einfließen, damit Offsets nach dem 28. Februar nicht um einen Tag verrutschen.
Monatslängen berechnen: 30/31-Tage-Logik und Februar abhängig vom Schaltjahr
Für einen Ewigen Kalender muss die Monatslänge aus dem Monatsindex abgeleitet werden, statt Werte fest zu speichern. Bei Januar bis Juli wechselt das Muster 31/30 nahezu streng alternierend, ab August verschiebt es sich: August hat 31 Tage, danach alterniert es wieder. Diese Umschaltung lässt sich als Regelkette oder als kleine Lookup-Tabelle abbilden; die Ausnahme bleibt der Februar, der nicht in das 30/31-Schema passt.
| Monat | Tage (Normaljahr) | Tage (Schaltjahr) |
|---|---|---|
| Januar | 31 | 31 |
| Februar | 28 | 29 |
| März | 31 | 31 |
| April | 30 | 30 |
| Mai | 31 | 31 |
| Juni | 30 | 30 |
| Juli | 31 | 31 |
| August | 31 | 31 |
| September | 30 | 30 |
| Oktober | 31 | 31 |
| November | 30 | 30 |
| Dezember | 31 | 31 |
Der Februar hängt vom Schaltjahrbit ab: 28 Tage, bei aktivem Schaltjahr 29. Die Schaltjahrentscheidung folgt im gregorianischen Kalender der Teilbarkeitsregel (durch 4 ja; durch 100 nein; durch 400 ja) und liefert ein einzelnes Steuersignal, das nur den Februarpfad beeinflusst. Für alle übrigen Monate genügt die 30/31-Logik mit der August-Umschaltung, sodass die Schaltlogik im Ewigen Kalender kompakt bleibt.
Wochentag ermitteln: Datum in Wochentag umrechnen und Plausibilitätschecks
Für einen Ewigen Kalender gehört die Wochentagsberechnung zur Schaltlogik: Aus Jahr, Monat und Tag wird eine Zahl 0–6 abgeleitet und auf Montag–Sonntag abgebildet. Praktisch ist eine feste Monatscodierung (Monats-Offset), ergänzt um eine Jahreskorrektur und die Schaltjahresregel; bei Januar/Februar wird oft mit dem Vorjahr gerechnet, weil der Schalttag den Jahresanfang beeinflusst. So bleibt die Umrechnung rein arithmetisch und passt gut zu einer Logik, die zwischen Gemeinjahr und Schaltjahr unterscheidet.
Plausibilitätschecks für Eingaben und Ergebnis
Vor der Ausgabe sollten Eingaben geprüft werden, damit keine unmöglichen Daten einen scheinbar gültigen Wochentag liefern:
- Monat 1–12, Tag 1–31, Jahr im vorgesehenen Bereich (z. B. 1583–4099, je nach Einsatz).
- Tagesgrenze je Monat: Apr/Jun/Sep/Nov ≤ 30; Feb ≤ 28, im Schaltjahr ≤ 29.
- Schaltjahrregel: Gregorianisch (durch 4, nicht durch 100, außer durch 400) bzw. die im Mechanismus abgebildete Variante.
- Selbsttest mit Referenzen: 2000-03-01 = Mittwoch, 1900-03-01 = Donnerstag, 2100-03-01 = Montag; solche Paare prüfen Jahrhundertausnahmen.
- Interner Konsistenzcheck: Für gültige Daten muss (Datum + 1 Tag) den Wochentag um exakt +1 mod 7 verschieben, auch über Monats- und Jahreswechsel.
