Signatur
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
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
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)
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()]}`);
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);
// Wichtig · Fallstricke
- Nullbasiert: Der häufigste Fehler ist das vergessene
+ 1bei der Anzeige. Tag (getUTCDate()) und Jahr beginnen dagegen nicht bei null. - Ungültige Daten: Bei
new Date("unsinn")liefert die MethodeNaN. Vorher mitNumber.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
Dateist, wird einTypeErrorausgelöst. - Kompatibilität: wird in allen Browsern und Node.js-Versionen unterstützt. Die neue
Temporal-API liefert Monate 1-basiert (month).