Signatur
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
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());
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());
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));
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'));
// 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()undgetUTCDate()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, ohneZ) dagegen als Ortszeit. Das beeinflusst das Ergebnis vongetUTCDate(). - Ungültige Daten liefern
NaNund keinen Fehler. Prüfen Sie das Ergebnis mitNumber.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.