JavaScriptsDatum & Uhrzeit

Schaltjahr prüfen

Sagt für jedes Jahr, ob es ein Schaltjahr ist, erklärt die Regel Schritt für Schritt und nennt die nächsten Schaltjahre.

Die Erde braucht für einen Umlauf um die Sonne nicht 365 Tage, sondern rund 365,2422. Diese knapp sechs Stunden Rest summieren sich: Ohne Gegenmaßnahme wäre der Kalender nach 120 Jahren um einen Monat verschoben, und irgendwann fiele Weihnachten in den Sommer. Der Schalttag am 29. Februar gleicht das aus — aber nicht ganz genau, und deshalb ist die Regel dreistufig.

Sie lautet: Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist — außer, es ist durch 100 teilbar — außer, es ist durch 400 teilbar. 2024 war also ein Schaltjahr, 1900 war keines, 2000 aber schon. Diese doppelte Ausnahme ist der Grund, warum viele Programme rund um den Jahrtausendwechsel Fehler zeigten: Wer nur die 4er-Regel kannte, lag 1900 falsch, und wer nur die 100er-Ausnahme kannte, lag 2000 falsch.

Das Script prüft jedes eingegebene Jahr und zeigt dabei nicht nur das Ergebnis, sondern rechnet die drei Stufen einzeln vor. Darunter stehen die nächsten zehn Schaltjahre ab dem eingegebenen. Ein Hinweis für weit zurückliegende Jahre: Vor 1582 galt der julianische Kalender, in dem schlicht jedes vierte Jahr ein Schaltjahr war. Auf die Umstellung folgte die Streichung von zehn Tagen — auf den 4. Oktober 1582 folgte unmittelbar der 15. Die protestantischen deutschen Länder zogen erst 1700 nach.

Übrigens bleibt auch die Gregorianische Regel unvollkommen: Sie liegt um etwa einen Tag in 3200 Jahren daneben. Verwandtes im Archiv: Osterdatum berechnen — dort wirkt derselbe Kalenderaufbau in einer noch verwickelteren Formel —, Tage bis zum Jahr 3000 und Tage zwischen zwei Daten.

Datum & Uhrzeit Baujahr 2026 läuft in deinem Browser
Script von kostenlose-javascripts.de

So funktioniert das Script

Die eigentliche Prüfung ist eine einzige Zeile. Sie lohnt trotzdem eine genaue Betrachtung, weil in ihr die Rangfolge von Operatoren steckt — und weil die häufigste falsche Fassung fast identisch aussieht.

return (jahr % 4 === 0 && jahr % 100 !== 0) || jahr % 400 === 0;

% liefert den Rest einer Division; ist er null, ist die Zahl teilbar. Die Zeile liest sich also: „durch 4 teilbar und nicht durch 100 teilbar — oder durch 400 teilbar". Die Klammern sind hier zwar nicht zwingend, weil && stärker bindet als ||, aber sie machen die Absicht sofort erkennbar. Bei logischen Ausdrücken mit gemischten Operatoren ist das immer die bessere Wahl.

Zum Vergleich die verbreitete falsche Fassung: jahr % 4 === 0 && (jahr % 100 !== 0 || jahr % 400 === 0) — die ist zufällig ebenfalls richtig, weil jedes durch 400 teilbare Jahr auch durch 4 teilbar ist. Wirklich falsch wird es bei jahr % 4 === 0 || jahr % 400 === 0: Damit gälte 1900 als Schaltjahr.

let kandidat = jahr + 1;
while (naechste.length < 10) {
  if (istSchaltjahr(kandidat)) naechste.push(kandidat);
  kandidat++;
}

Für die Liste der nächsten Schaltjahre wird nicht eine feste Zahl von Jahren durchgegangen, sondern so lange weitergezählt, bis zehn Treffer beisammen sind. Das ist der Unterschied zwischen einer for- und einer while-Schleife: Die eine läuft eine bekannte Anzahl von Malen, die andere so lange, bis ein Ziel erreicht ist. Hier ist das nötig, weil um ein Jahrhundertjahr herum eine Lücke von acht statt vier Jahren entsteht.

if (j % 100 === 0 && j % 400 !== 0) ausgefallen.push(j);

Diese Schleife sucht in der angezeigten Spanne nach genau den Jahren, die der Ausnahme zum Opfer fallen — 2100, 2200, 2300. Ohne den Hinweis sähe die Liste dort schlicht falsch aus, denn zwischen 2096 und 2104 klafft eine ungewohnte Lücke.

document.getElementById("sj-jahr").addEventListener("input", pruefen);

Dieselbe Funktion hängt am Knopf und am Eingabefeld, sodass die Antwort schon beim Tippen erscheint. Bei einer Rechnung, die im Bruchteil einer Millisekunde fertig ist, kostet das nichts und erspart einen Klick — bei aufwendigen Berechnungen wäre es dagegen unklug, weil dann bei jedem Zeichen der ganze Aufwand anfiele.

Zum Anpassen: Für den julianischen Kalender vor 1582 genügt jahr % 4 === 0. Wollt ihr wissen, wie viele Schaltjahre in einem Zeitraum liegen, braucht ihr keine Schleife — die Formel lautet: durch 4 teilbare minus durch 100 teilbare plus durch 400 teilbare Jahre.

Script für die eigene Homepage

Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.

Mehr aus der Kategorie Datum & Uhrzeit