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

Date.prototype.getUTCMonth()

Methode

Gibt den Monat eines <code>Date</code>-Objekts nach Weltzeit (UTC) 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.getUTCMonth()

Beschreibung

getUTCMonth() liest den Monat eines Date-Objekts in koordinierter Weltzeit (UTC) aus. Die lokale Zeitzone des Systems spielt dabei keine Rolle. Das Ergebnis ist nullbasiert: 0 steht für Januar, 11 für Dezember.

Die Methode eignet sich überall dort, wo Datumswerte unabhängig vom Standort gleich ausgewertet werden müssen, etwa bei Serverprotokollen, API-Zeitstempeln im ISO-Format, Abrechnungszeiträumen oder beim Gruppieren von Daten nach Monaten. Das Gegenstück für die lokale Zeit ist getMonth().

Wichtig: Kurz vor oder nach einem Monatswechsel können getMonth() und getUTCMonth() unterschiedliche Werte liefern. Das gilt zum Beispiel für den 1. März 00:30 Uhr in Berlin, was in UTC noch dem 28. bzw. 29. Februar entspricht. Wer einen Monat anzeigen möchte, muss 1 addieren oder besser Intl.DateTimeFormat mit timeZone: "UTC" verwenden.

Rückgabewert

Typ
number
Beschreibung
Eine Ganzzahl von 0 bis 11 für den Monat nach UTC. Bei einem ungültigen Datum wird NaN zurückgegeben.

Beispiele

Monat aus einem ISO-Zeitstempel lesen

const datum = new Date("2024-07-15T12:00:00Z");
console.log(datum.getUTCMonth());      // nullbasiert
console.log(datum.getUTCMonth() + 1);  // für die Anzeige
6 7

Unterschied zwischen lokaler Zeit und UTC am Monatswechsel

// 1. März 2024, 00:30 Uhr in Berlin (MEZ, UTC+1)
const d = new Date("2024-03-01T00:30:00+01:00");
console.log(d.getMonth());    // bei lokaler Zeitzone Europe/Berlin: 2 (März)
console.log(d.getUTCMonth()); // immer: 1 (Februar, 23:30 UTC)
2 1

Monatsnamen per Lookup-Tabelle ausgeben

const monate = ["Januar", "Februar", "März", "April", "Mai", "Juni",
  "Juli", "August", "September", "Oktober", "November", "Dezember"];

const rechnung = new Date("2024-11-03T08:15:00Z");
console.log(`Abrechnungsmonat: ${monate[rechnung.getUTCMonth()]}`);
Abrechnungsmonat: November

Log-Einträge nach UTC-Monat gruppieren

const logs = [
  { ts: "2024-01-31T23:59:00Z", msg: "A" },
  { ts: "2024-02-01T00:01:00Z", msg: "B" },
  { ts: "2024-02-14T10:00:00Z", msg: "C" }
];

const proMonat = logs.reduce((acc, { ts, msg }) => {
  const d = new Date(ts);
  const key = `${d.getUTCFullYear()}-${String(d.getUTCMonth() + 1).padStart(2, "0")}`;
  (acc[key] ??= []).push(msg);
  return acc;
}, {});

console.log(proMonat);
{ '2024-01': [ 'A' ], '2024-02': [ 'B', 'C' ] }

// Wichtig · Fallstricke

  • Nullbasiert: Der häufigste Fehler ist das vergessene + 1 bei der Anzeige. Tag (getUTCDate()) und Jahr beginnen dagegen nicht bei null.
  • Ungültige Daten: Bei new Date("unsinn") liefert die Methode NaN. Vorher mit Number.isNaN(d.getTime()) prüfen.
  • Parsing-Falle: Reine Datumsstrings wie "2024-03-01" werden als UTC gelesen, Strings mit Uhrzeit ohne Zeitzonenangabe wie "2024-03-01T00:00" dagegen als lokale Zeit. Das beeinflusst das UTC-Ergebnis.
  • Für eine sprachabhängige Ausgabe besser toLocaleDateString("de-DE", { month: "long", timeZone: "UTC" }) verwenden, statt eine eigene Tabelle zu pflegen.
  • Wird die Methode auf einem Objekt aufgerufen, das kein Date ist, wird ein TypeError ausgelöst.
  • Kompatibilität: wird in allen Browsern und Node.js-Versionen unterstützt. Die neue Temporal-API liefert Monate 1-basiert (month).