Signatur
Beschreibung
getUTCDay() liefert den Wochentag des gespeicherten Zeitpunkts nach UTC, nicht nach der lokalen Zeitzone des Systems. Der Wert liegt zwischen 0 (Sonntag) und 6 (Samstag). Die Zählung beginnt also am Sonntag, nicht am Montag wie nach ISO 8601.
Die Methode ist sinnvoll, wenn Ergebnisse unabhängig von der Zeitzone gleich sein sollen. Das betrifft etwa Server-Logik, Berechnungen mit ISO-Zeitstempeln, Planung über mehrere Zeitzonen hinweg oder Tests, die auf jedem Rechner dasselbe Ergebnis liefern müssen. Für die Anzeige beim Nutzer ist meistens getDay() (lokale Zeit) oder Intl.DateTimeFormat besser geeignet.
Zu beachten: Kurz vor oder nach Mitternacht kann sich der UTC-Wochentag vom lokalen Wochentag unterscheiden. In Berlin (UTC+1/+2) ist es z. B. am Montag um 00:30 Uhr lokal nach UTC noch Sonntag.
Rückgabewert
0 (Sonntag) bis 6 (Samstag) für den Wochentag nach UTC. Bei einem ungültigen Datum ist der Wert NaN.Beispiele
Wochentag eines ISO-Zeitstempels ermitteln
const date = new Date('2024-03-15T10:00:00Z');
const wochentage = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'];
console.log(date.getUTCDay());
console.log(wochentage[date.getUTCDay()]);
Unterschied zwischen getDay() und getUTCDay()
// Montag, 00:30 Uhr in Berlin (UTC+1) = Sonntag 23:30 UTC
const date = new Date('2024-01-15T00:30:00+01:00');
console.log('UTC:', date.getUTCDay());
console.log('Lokal (Europe/Berlin):', date.getDay());
Wochenende nach UTC prüfen (z. B. für Server-Logik)
const isUTCWeekend = (date) => {
const day = date.getUTCDay();
return day === 0 || day === 6;
};
console.log(isUTCWeekend(new Date('2024-06-08T12:00:00Z'))); // Samstag
console.log(isUTCWeekend(new Date('2024-06-10T12:00:00Z'))); // Montag
ISO-Wochentag (Montag = 1 … Sonntag = 7) berechnen
const isoWeekdayUTC = (date) => date.getUTCDay() || 7;
console.log(isoWeekdayUTC(new Date('2024-06-09T08:00:00Z'))); // Sonntag
console.log(isoWeekdayUTC(new Date('2024-06-10T08:00:00Z'))); // Montag
console.log(new Date('ungültig').getUTCDay());
// Wichtig · Fallstricke
- Die Woche beginnt am Sonntag:
0ist Sonntag, nicht Montag. Für ISO 8601 (Montag = 1, Sonntag = 7) schreibt mangetUTCDay() || 7. - Verwechslung mit
getUTCDate():getUTCDay()gibt den Wochentag zurück,getUTCDate()den Tag im Monat (1–31). - Kein Setter: Ein
setUTCDay()gibt es nicht. Um den Wochentag zu ändern, verschiebt man das Datum mitsetUTCDate(). - Ungültige Daten geben
NaNzurück. Vor Array-Zugriffen wienamen[date.getUTCDay()]sollte man das prüfen, sonst kommtundefinedheraus. - Parsing-Falle: Reine Datumsangaben wie
'2024-03-15'werden als UTC ausgewertet, Angaben mit Uhrzeit ohne Zeitzonenangabe ('2024-03-15T10:00') dagegen als lokale Zeit. - Die Methode wird von allen Browsern und von Node.js unterstützt. Für neue Projekte lohnt sich ein Blick auf die
Temporal-API (dayOfWeek, ISO-Zählung), deren Browser-Unterstützung aber noch begrenzt ist.