JavaScriptsDatum & Uhrzeit

Mondphase berechnen

Zeigt für jedes Datum das Mondalter, die Phase und den Beleuchtungsgrad — samt der nächsten Neu- und Vollmondtermine.

Der Mond braucht von einem Neumond bis zum nächsten im Mittel 29 Tage, 12 Stunden und 44 Minuten. Diese Spanne heißt synodischer Monat, und weil sie recht gleichmäßig ist, lässt sich die Mondphase mit einer erstaunlich einfachen Rechnung abschätzen: Man zählt die Tage seit einem bekannten Neumond und schaut, wo man im Zyklus gelandet ist.

Wählt ein Datum, und das Script nennt euch das Mondalter in Tagen, die Phase, den beleuchteten Anteil der sichtbaren Scheibe in Prozent und die nächsten Termine für Neu- und Vollmond. Als Ausgangspunkt dient der Neumond vom 6. Januar 2000 um 18:14 UTC — ein in der Astronomie gebräuchlicher Bezugswert.

Zur Genauigkeit gehört ein ehrliches Wort: Die Rechnung nimmt einen gleichförmigen Mondumlauf an, und den gibt es nicht. Die Mondbahn ist elliptisch, und Sonne und Erde stören sie fortlaufend; einzelne Monate weichen um bis zu sechs Stunden vom Mittelwert ab. Das Ergebnis ist deshalb auf etwa einen halben Tag genau — für „heute Abend ist fast Vollmond" völlig ausreichend, für eine astronomische Beobachtungsplanung nicht. Wer es genauer braucht, kommt um die Störungsrechnung nicht herum, und die füllt Bücher.

Warum die Phase überhaupt schwankt, ist schnell erklärt: Die Hälfte des Mondes, die zur Sonne zeigt, ist immer beleuchtet. Wir sehen von dieser Hälfte je nach Stellung mal mehr, mal weniger. Beim Neumond steht der Mond zwischen Erde und Sonne, seine beleuchtete Seite zeigt von uns weg; beim Vollmond steht die Erde dazwischen, und wir schauen voll auf die beleuchtete Seite.

Verwandtes: Osterdatum berechnen — das kirchliche Osterdatum hängt am ersten Frühlingsvollmond und benutzt denselben Mondzyklus in Form einer Näherungsformel —, Jahreszeit und der Kalender.

Datum & Uhrzeit Baujahr 2026 läuft in deinem Browser

Näherungsrechnung mit gleichförmigem Umlauf — auf etwa einen halben Tag genau.

Script von kostenlose-javascripts.de

So funktioniert das Script

Die ganze Rechnung besteht aus einer Subtraktion, einer Restbildung und einem Kosinus. Das reicht, weil die Mondphase im Kern eine zyklische Größe ist — und für zyklische Größen sind genau diese beiden Werkzeuge gemacht.

const tage = (zeitpunkt - bezugsneumond) / 86400000;
return ((tage % monat) + monat) % monat;

Zuerst wird der Abstand zum Bezugsneumond in Tagen bestimmt. Der Rest bei Division durch die Länge eines synodischen Monats sagt dann, wo im Zyklus man steht: 0 bedeutet Neumond, 14,77 Vollmond, 29,5 wieder fast Neumond. Die doppelte Restbildung mit dem Zwischenschritt „plus Monat" fängt Daten vor dem Jahr 2000 ab, bei denen die Differenz negativ ist — dieselbe Vorsichtsmaßnahme wie beim chinesischen Tierkreiszeichen.

return (1 - Math.cos(2 * Math.PI * tage / monat)) / 2;

Der beleuchtete Anteil folgt einer Kosinuswelle. Der Bruch tage / monat ergibt den Fortschritt im Zyklus als Wert zwischen 0 und 1; mal 2 * Math.PI wird daraus ein voller Kreis im Bogenmaß, denn Math.cos rechnet nicht mit Grad. Der Kosinus schwankt zwischen 1 und −1; (1 - x) / 2 formt daraus einen Wert zwischen 0 und 1 — 0 beim Neumond, 1 beim Vollmond. Diese Umformung von einem Wertebereich in einen anderen begegnet euch in jeder Animation und jeder Farbberechnung.

const phasen = [
  { bis: 1.0,  name: "Neumond" },
  { bis: 6.4,  name: "zunehmende Sichel" },
  …
];

Die acht Phasennamen sind keine astronomischen Größen, sondern eine Einteilung nach Augenschein. Neumond, Halbmond und Vollmond sind eigentlich Zeitpunkte, keine Zeiträume — im Alltag spricht man aber auch am Tag davor und danach von Vollmond. Deshalb bekommen sie hier ein Fenster von etwa zwei Tagen, die Zwischenphasen den größeren Rest. Die Suche läuft wie beim Sternzeichen über eine Liste von Obergrenzen.

let rest = zielAlter - jetzt;
if (rest <= 0) rest += monat;
return new Date(zeitpunkt + rest * 86400000);

Für den nächsten Neu- oder Vollmond wird gefragt: Wie viele Tage fehlen noch bis zum Zielalter im Zyklus? Liegt das Ziel bereits hinter uns, ist die Differenz negativ, und ein ganzer Monat wird addiert — dann ist der nächste Termin im folgenden Zyklus gemeint. Der Vollmond hat dabei das Zielalter monat / 2, also 14,77 Tage.

Zum Anpassen: Eine Mondscheibe zeichnen lässt sich mit zwei übereinanderliegenden Kreisen, deren Versatz sich aus dem Beleuchtungsgrad ergibt — oder einfacher mit den acht Mondzeichen aus dem Zeichensatz. Für die Südhalbkugel muss die Darstellung gespiegelt werden: Dort ist die zunehmende Sichel rechts offen statt links.

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