Die Methode Date.prototype.setDate() setzt den Tag des Monats eines Date-Objekts in der lokalen Zeitzone. Eine besonders nützliche Eigenschaft: Werte außerhalb des gültigen Bereichs (1–31) werden automatisch in den Folgemonat oder Vormonat überrollt – das macht setDate() zur idealen Methode für jegliche Datumsarithmetik wie „in 30 Tagen” oder „vor 7 Tagen”. Die Methode mutiert die Date-Instanz direkt und gibt zusätzlich den neuen Zeitstempel zurück.

Funktionsweise

setDate() mutiert die bestehende Date-Instanz und gibt zusätzlich den neuen Zeitstempel als Millisekunden seit Epoch zurück. Die automatische Normalisierung ist eine Stärke der Methode:

  • setDate(0): Setzt das Datum auf den letzten Tag des Vormonats.
  • setDate(32) im Mai: Setzt das Datum auf den 1. Juni.
  • setDate(-5): Setzt das Datum auf 5 Tage vor dem 1. des aktuellen Monats.

Das macht die Methode zum Werkzeug der Wahl für Tagesarithmetik. Wer dagegen eine unveränderte Kopie eines Datums benötigt, sollte vorher mit new Date(date) klonen.

Syntax

JavaScript Syntax
date.setDate(dayValue)
Parameter
dayValue

Eine Ganzzahl, die den neuen Tag des Monats angibt. Gültige Werte liegen zwischen 1 und 31; abweichende Werte führen zu einem Monatsüberlauf bzw. -unterlauf.

Rückgabewert

Die Anzahl der Millisekunden seit dem 1. Januar 1970 UTC nach der Aktualisierung. Bei einem ungültigen Wert wird NaN zurückgegeben und das Date-Objekt selbst auf einen ungültigen Zustand gesetzt.

Beispiele

Tag explizit setzen

JavaScript Beispiel
const date = new Date("2026-05-01");
date.setDate(15);
console.log(date.toISOString().slice(0, 10));
Output
2026-05-15

Automatischer Monatsüberlauf

JavaScript Beispiel
const date = new Date("2026-05-01");
date.setDate(32);
console.log(date.toISOString().slice(0, 10));
Output
2026-06-01

Letzter Tag des Vormonats

JavaScript Beispiel
const date = new Date("2026-05-15");
date.setDate(0);
console.log(date.toISOString().slice(0, 10));
Output
2026-04-30

Tage zum aktuellen Datum addieren

Klassisches Muster: ein Datum um eine bestimmte Anzahl Tage in die Zukunft verschieben. Dabei wird der Monatsüberlauf automatisch korrekt aufgelöst.

JavaScript Beispiel
function addiereTage(date, n) {
    const result = new Date(date);
    result.setDate(result.getDate() + n);
    return result;
}

const start = new Date("2026-05-25");
console.log(addiereTage(start, 10).toISOString().slice(0, 10));
Output
2026-06-04

Tage subtrahieren mit negativen Werten

JavaScript Beispiel
const date = new Date("2026-05-01");
date.setDate(date.getDate() - 7);
console.log(date.toISOString().slice(0, 10));
Output
2026-04-24

Hinweise & verwandte Methoden

  • setDate() mutiert das Date-Objekt. Wer das Original behalten möchte, muss zuvor klonen: new Date(original) oder new Date(original.getTime()).
  • Für die UTC-Variante: Date.prototype.setUTCDate().
  • Tagesarithmetik mit setDate() ist zuverlässiger als das simple Addieren von Millisekunden – Letzteres geht bei Sommerzeit-Übergängen schief.
  • Beim Setzen ungültiger Werte wie NaN wird das gesamte Date-Objekt invalidiert. Mit Number.isNaN(date.getTime()) lässt sich das prüfen.
/ Weiter

Zurück zu Date

Zur Übersicht