Signatur
Beschreibung
Die Methode getMonth() liest den Monat eines Date-Objekts aus, und zwar in der lokalen Zeitzone der Laufzeitumgebung. Der Wert ist nullbasiert: 0 steht für Januar, 11 für Dezember. Das überrascht viele, weil Tag (getDate()) und Jahr (getFullYear()) nicht nullbasiert sind.
Durch die Nullbasierung eignet sich der Rückgabewert direkt als Index für Arrays mit Monatsnamen. Für die Anzeige als Zahl, etwa in einem Datumsformat wie TT.MM.JJJJ, musst du dagegen 1 addieren.
Ist das Datum ungültig (Invalid Date), gibt die Methode NaN zurück. Brauchst du den Monat unabhängig von der Zeitzone, zum Beispiel für Serverlogik oder für Zeitstempel in UTC, nimm stattdessen getUTCMonth().
Rückgabewert
0 bis 11 für den Monat in lokaler Zeit oder NaN, wenn das Datum ungültig ist.Beispiele
Monat auslesen (nullbasiert)
// Achtung: Auch im Konstruktor ist der Monat nullbasiert (11 = Dezember)
const weihnachten = new Date(2024, 11, 24);
console.log(weihnachten.getMonth());
Monatsnamen über einen Array-Index ermitteln
const monate = [
'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni',
'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'
];
const datum = new Date(2024, 2, 15);
console.log(`Aktueller Monat: ${monate[datum.getMonth()]}`);
Datum als TT.MM.JJJJ formatieren
const formatiereDatum = (d) => {
const tag = String(d.getDate()).padStart(2, '0');
const monat = String(d.getMonth() + 1).padStart(2, '0'); // +1 nicht vergessen!
return `${tag}.${monat}.${d.getFullYear()}`;
};
console.log(formatiereDatum(new Date(2024, 0, 5)));
Quartal berechnen und ungültige Daten erkennen
const quartal = (d) => {
const m = d.getMonth();
if (Number.isNaN(m)) throw new RangeError('Ungültiges Datum');
return Math.floor(m / 3) + 1;
};
console.log(quartal(new Date(2024, 7, 1))); // August
console.log(new Date('kein Datum').getMonth());
// Wichtig · Fallstricke
- Nullbasiert: Der häufigste Fehler ist das vergessene
+ 1bei der Anzeige. Auch der Konstruktornew Date(jahr, monat, tag)undsetMonth()erwarten nullbasierte Monate. - Zeitzone:
getMonth()arbeitet mit lokaler Zeit.new Date('2024-01-01')wird als UTC-Mitternacht geparst und kann deshalb in Zeitzonen westlich von UTC (z. B. in den USA) den Monat11des Vorjahres liefern. Für zeitzonenunabhängige Logik nimmst dugetUTCMonth(). - Ungültige Daten: Bei Invalid Date ist der Rückgabewert
NaN. Das prüfst du mitNumber.isNaN(). - Lokalisierte Namen: Für Monatsnamen in anderen Sprachen ist
Intl.DateTimeFormatbzw.toLocaleDateString('de-DE', { month: 'long' })oft besser als ein fest eingetragenes Array. - Kompatibilität: Die Methode wird von allen Browsern und von Node.js unterstützt.