Die Methode Date.prototype.setFullYear() setzt das vierstellige Jahr eines Date-Objekts in der lokalen Zeitzone. Optional können auch Monat und Tag in einem einzigen Aufruf angepasst werden – das macht sie zur kompaktesten Möglichkeit, ein Date-Objekt auf ein bestimmtes Kalenderdatum zu schieben. Sie ist der moderne Ersatz für die unsichere setYear()-Methode, die Jahre relativ zu 1900 erwartete und damit Y2K-typische Bugs erzeugte.
Funktionsweise
Im Gegensatz zur veralteten setYear() erwartet setFullYear() immer eine vierstellige Jahreszahl. Die optionalen Parameter monthValue und dateValue ermöglichen es, in einem Aufruf bis zu drei Komponenten gleichzeitig zu ändern – effizient und atomar.
Wichtige Eigenschaften:
- Mutierend: Das Date-Objekt wird direkt verändert. Für eine Kopie zuvor klonen.
- Überlauf: Werte außerhalb gültiger Bereiche bei
monthValue(z. B. 12) oderdateValue(z. B. 32) werden automatisch normalisiert. - Veraltete
setYear(): Niemals mehr verwenden.
Syntax
date.setFullYear(yearValue)
date.setFullYear(yearValue, monthValue)
date.setFullYear(yearValue, monthValue, dateValue)yearValue Eine Ganzzahl, die das neue Jahr repräsentiert (vierstellig).
monthValue (Optional) Eine Ganzzahl von 0 (Januar) bis 11 (Dezember).
dateValue (Optional) Eine Ganzzahl von 1 bis 31, die den Tag des Monats angibt.
Rückgabewert
Die Anzahl der Millisekunden seit dem 1. Januar 1970 UTC nach der Aktualisierung. Bei ungültigen Werten wird NaN zurückgegeben.
Beispiele
Nur das Jahr ändern
const date = new Date("2026-05-01");
date.setFullYear(2030);
console.log(date.toISOString().slice(0, 10));2030-05-01Jahr, Monat und Tag in einem Aufruf
const date = new Date();
date.setFullYear(2026, 11, 24);
console.log(date.toISOString().slice(0, 10));2026-12-24Jahresende auf 31.12. setzen
function setzeJahresende(date) {
const result = new Date(date);
result.setFullYear(result.getFullYear(), 11, 31);
return result;
}
console.log(setzeJahresende(new Date("2026-05-15")).toISOString().slice(0, 10));2026-12-31Vorsicht beim Schaltjahr
Wird ein 29. Februar in ein Nicht-Schaltjahr gesetzt, normalisiert JavaScript das Datum automatisch auf den 1. März.
const date = new Date("2024-02-29");
date.setFullYear(2026);
console.log(date.toISOString().slice(0, 10));2026-03-01Geburtstagslogik
function naechsterGeburtstag(geburt, heute) {
const result = new Date(geburt);
result.setFullYear(heute.getFullYear());
if (result < heute) result.setFullYear(result.getFullYear() + 1);
return result;
}
console.log(naechsterGeburtstag(new Date("1990-07-15"), new Date("2026-05-01"))
.toISOString().slice(0, 10));2026-07-15Hinweise & verwandte Methoden
- Für die UTC-Variante:
Date.prototype.setUTCFullYear(). - Niemals die veraltete Methode
setYear()verwenden – sie liefert für zweistellige Werte kein verlässliches Ergebnis. - Beim 29. Februar in Schaltjahren ist Vorsicht geboten: ein Wechsel in ein Nicht-Schaltjahr verschiebt das Datum auf den 1. März.
setFullYear()mutiert das Original – wer eine Kopie braucht, sollte zuerst klonen.