Start · Sprachen · JavaScript · Referenz · Date.prototype.getMonth()

Date.prototype.getMonth()

Methode

Gibt den Monat eines <code>Date</code>-Objekts nach lokaler Zeit als nullbasierte Zahl von <code>0</code> (Januar) bis <code>11</code> (Dezember) zurück.

seit JavaScript ES1 (Baseline: alle Browser) Kategorie: method-property

Signatur

Date.prototype.getMonth()

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

Typ
number
Beschreibung
Eine Ganzzahl von 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());
11

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()]}`);
Aktueller Monat: März

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)));
05.01.2024

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());
3 NaN

// Wichtig · Fallstricke

  • Nullbasiert: Der häufigste Fehler ist das vergessene + 1 bei der Anzeige. Auch der Konstruktor new Date(jahr, monat, tag) und setMonth() 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 Monat 11 des Vorjahres liefern. Für zeitzonenunabhängige Logik nimmst du getUTCMonth().
  • Ungültige Daten: Bei Invalid Date ist der Rückgabewert NaN. Das prüfst du mit Number.isNaN().
  • Lokalisierte Namen: Für Monatsnamen in anderen Sprachen ist Intl.DateTimeFormat bzw. 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.