Die Methode Date.prototype.getMonth() gibt den Monat eines Date-Objekts in der lokalen Zeitzone zurück. Das wichtigste Merkmal dieser Methode ist die 0-basierte Indexierung: Januar entspricht dem Wert 0, Dezember dem Wert 11. Diese Konvention ist eine der bekanntesten Stolperfallen der JavaScript-Date-API und führt regelmäßig zu Off-by-One-Fehlern. In Code-Reviews lohnt es sich, jede Verwendung von getMonth() und setMonth() gezielt zu prüfen.
Funktionsweise
getMonth() liefert eine Ganzzahl von 0 bis 11. Die Zuordnung lautet:
| Wert | Monat (DE) | Monat (EN) |
|---|---|---|
| 0 | Januar | January |
| 1 | Februar | February |
| 2 | März | March |
| 3 | April | April |
| 4 | Mai | May |
| 5 | Juni | June |
| 6 | Juli | July |
| 7 | August | August |
| 8 | September | September |
| 9 | Oktober | October |
| 10 | November | November |
| 11 | Dezember | December |
Um auf einen menschenlesbaren Monat (1–12) zu kommen, muss + 1 addiert werden – ein klassisches Muster bei der Datumsformatierung.
Syntax
date.getMonth()Die Methode erwartet keine Parameter.
Rückgabewert
Eine Ganzzahl zwischen 0 und 11, die den 0-basierten Monatsindex in der lokalen Zeitzone repräsentiert. Bei einem ungültigen Datum wird NaN zurückgegeben.
Beispiele
Monatsindex auslesen
const date = new Date("2026-05-01");
console.log(date.getMonth());4Mai entspricht dem Index 4, da die Zählung bei 0 (Januar) beginnt.
Monatsname per Mapping
const monate = ["Januar", "Februar", "März", "April", "Mai", "Juni",
"Juli", "August", "September", "Oktober", "November", "Dezember"];
function deutscherMonat(date) {
return monate[date.getMonth()];
}
console.log(deutscherMonat(new Date("2026-05-01")));
console.log(deutscherMonat(new Date("2026-12-24")));Mai
DezemberDatum als DD.MM.YYYY formatieren
function formatDeutsch(date) {
const dd = String(date.getDate()).padStart(2, "0");
const mm = String(date.getMonth() + 1).padStart(2, "0");
const yyyy = date.getFullYear();
return `${dd}.${mm}.${yyyy}`;
}
console.log(formatDeutsch(new Date("2026-05-01")));01.05.2026Quartal aus dem Monat ableiten
Das Quartal lässt sich elegant aus dem 0-basierten Monatsindex berechnen.
function quartal(date) {
return Math.floor(date.getMonth() / 3) + 1;
}
console.log(quartal(new Date("2026-02-15"))); // Februar
console.log(quartal(new Date("2026-05-01"))); // Mai
console.log(quartal(new Date("2026-08-30"))); // August
console.log(quartal(new Date("2026-12-24"))); // Dezember1
2
3
4Saison-Zuordnung (meteorologisch)
function jahreszeit(date) {
const m = date.getMonth();
if (m >= 2 && m <= 4) return "Frühling";
if (m >= 5 && m <= 7) return "Sommer";
if (m >= 8 && m <= 10) return "Herbst";
return "Winter";
}
console.log(jahreszeit(new Date("2026-05-01")));
console.log(jahreszeit(new Date("2026-12-21")));Frühling
WinterHinweise & verwandte Methoden
- Die 0-basierte Zählung gilt nicht für
getDate()(Tag des Monats) – dort ist die Zählung 1-basiert. Diese Inkonsistenz innerhalb derselben API ist eine wesentliche Fehlerquelle. - Zum Setzen des Monats:
Date.prototype.setMonth(). Werte über 11 oder unter 0 führen zu einem Jahresüberlauf. - Für eine zeitzonenunabhängige Variante:
Date.prototype.getUTCMonth(). - Für lokalisierte Monatsnamen ohne manuelles Mapping:
Intl.DateTimeFormatmit der Option{ month: "long" }oder{ month: "short" }.