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

Date.prototype.getUTCDate()

Methode

Gibt den Tag des Monats (1–31) eines <code>Date</code>-Objekts gemäß koordinierter Weltzeit (UTC) zurück.

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

Signatur

Date.prototype.getUTCDate()

Beschreibung

getUTCDate() liefert den Tag des Monats als ganze Zahl von 1 bis 31. Grundlage ist die koordinierte Weltzeit (UTC), nicht die lokale Zeitzone des Systems. Das Gegenstück für die lokale Zeitzone ist getDate().

Sinnvoll ist die Methode immer dann, wenn Datumswerte unabhängig vom Standort des Nutzers gleich ausgewertet werden sollen. Typische Fälle sind Zeitstempel aus Server-APIs, Datenbanken oder Logdateien, die meist in UTC gespeichert sind, außerdem Gruppierungen nach Kalendertag in Berichten und das Erzeugen von Datumsschlüsseln wie 2024-03-15.

Wichtig: Kurz vor oder nach Mitternacht kann der UTC-Tag vom lokalen Tag abweichen. In Deutschland (UTC+1 bzw. UTC+2) gibt getUTCDate() für den 15. März um 00:30 Uhr Ortszeit noch den 14 zurück. Ist das Date-Objekt ungültig, ist der Rückgabewert NaN.

Rückgabewert

Typ
number
Beschreibung
Ganze Zahl zwischen 1 und 31 für den Tag des Monats in UTC. Bei einem ungültigen Datum (Invalid Date) ist das Ergebnis NaN.

Beispiele

Tag des Monats aus einem ISO-Zeitstempel lesen

const bestellung = new Date('2024-03-15T22:45:00Z');
console.log(bestellung.getUTCDate());
15

Unterschied zwischen UTC-Tag und lokalem Tag

// 23:30 UTC am 31. Dezember – in Berlin (UTC+1) ist schon der 1. Januar
const silvester = new Date('2023-12-31T23:30:00Z');
console.log('UTC:', silvester.getUTCDate());
console.log('Lokal:', silvester.getDate());
UTC: 31 Lokal: 1 (bei Systemzeitzone Europe/Berlin)

Zeitzonenunabhängiger Datumsschlüssel zum Gruppieren von Logs

const pad = (n) => String(n).padStart(2, '0');

const toUTCKey = (date) =>
  `${date.getUTCFullYear()}-${pad(date.getUTCMonth() + 1)}-${pad(date.getUTCDate())}`;

const logs = [
  { ts: '2024-05-01T08:00:00Z', msg: 'Start' },
  { ts: '2024-05-01T23:59:59Z', msg: 'Backup' },
  { ts: '2024-05-02T00:00:01Z', msg: 'Rotation' }
];

const proTag = Object.groupBy(logs, ({ ts }) => toUTCKey(new Date(ts)));
console.log(Object.keys(proTag));
[ '2024-05-01', '2024-05-02' ]

Ungültige Eingaben abfangen

const parseTag = (input) => {
  const tag = new Date(input).getUTCDate();
  return Number.isNaN(tag) ? null : tag;
};

console.log(parseTag('2024-02-29T12:00:00Z'));
console.log(parseTag('kein Datum'));
29 null

// Wichtig · Fallstricke

  • Nicht verwechseln: getUTCDate() gibt den Tag des Monats zurück, getUTCDay() dagegen den Wochentag (0 = Sonntag bis 6 = Samstag).
  • Tageswechsel: Je nach Zeitzonenversatz weichen getDate() und getUTCDate() um einen Tag voneinander ab. Das betrifft vor allem Uhrzeiten nahe Mitternacht und Zeitzonen mit großem Versatz, etwa UTC−10 oder UTC+13.
  • Parsing-Falle: new Date('2024-03-15') (nur Datum) wird als UTC gelesen, new Date('2024-03-15T00:00') (Datum mit Uhrzeit, ohne Z) dagegen als Ortszeit. Das beeinflusst das Ergebnis von getUTCDate().
  • Ungültige Daten liefern NaN und keinen Fehler. Prüfen Sie das Ergebnis mit Number.isNaN().
  • Die Methode wird von allen Browsern und von Node.js unterstützt. Für neue Projekte mit viel Zeitzonenlogik lohnt sich ein Blick auf die Temporal-API. Sie wird derzeit eingeführt und ist noch nicht überall verfügbar.