Die Methode Date.prototype.setUTCMonth() setzt den 0-basierten Monatsindex eines Date-Objekts in der koordinierten Weltzeit (UTC). Optional kann der Tag des Monats im selben Aufruf festgelegt werden. Werte außerhalb von 0–11 führen zu einem Jahresüberlauf in UTC. Wie bei setMonth() sind die Monate 0-basiert: Januar = 0, Dezember = 11. Beim Wechsel auf einen kürzeren Monat normalisiert JavaScript automatisch in den Folgemonat – eine bekannte Stolperfalle.
Funktionsweise
Werte außerhalb von 0–11 führen zu einem Jahresüberlauf in UTC:
setUTCMonth(13): +1 Jahr, Februar.setUTCMonth(-1): -1 Jahr, Dezember.setUTCMonth(11, 24): Dezember, 24. Tag.
Eine Stolperfalle, die auch hier gilt: Wenn das aktuelle Datum z. B. der 31. März ist und setUTCMonth(1) (Februar) gesetzt wird, normalisiert JavaScript zum 3. März – nicht zum 28. Februar.
Syntax
date.setUTCMonth(monthValue)
date.setUTCMonth(monthValue, dayValue)monthValue Eine Ganzzahl von 0 (Januar) bis 11 (Dezember).
dayValue (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.
Beispiele
UTC-Monat setzen
const date = new Date("2026-05-01T12:00:00Z");
date.setUTCMonth(11);
console.log(date.toISOString().slice(0, 10));2026-12-01Jahresüberlauf in UTC
const date = new Date("2026-05-01T12:00:00Z");
date.setUTCMonth(13);
console.log(date.toISOString().slice(0, 10));2027-02-01Monat und Tag in UTC zusammen setzen
const date = new Date("2026-05-01T12:00:00Z");
date.setUTCMonth(11, 24);
console.log(date.toISOString().slice(0, 10));2026-12-24Sichere Monatsnavigation
function setzeMonatsanfangUTC(date, monthIndex) {
const result = new Date(date);
result.setUTCDate(1);
result.setUTCMonth(monthIndex);
return result;
}
console.log(setzeMonatsanfangUTC(new Date("2026-03-31T00:00:00Z"), 1).toISOString().slice(0, 10));2026-02-01Hinweise & verwandte Methoden
- Für die lokale Variante:
Date.prototype.setMonth(). - In Server-Anwendungen sollte konsequent
setUTCMonth()verwendet werden. - Beim Wechsel von einem 31-Tage- in einen kürzeren Monat normalisiert JavaScript automatisch in den Folgemonat. Wer das vermeiden will, sollte zuerst
setUTCDate(1)setzen. - Die 0-basierte Zählung ist auch hier ein Stolperstein.
- Die Methode mutiert das Original.