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

Date.prototype.getUTCDay()

Methode

Gibt den Wochentag eines <code>Date</code>-Objekts nach koordinierter Weltzeit (UTC) als Zahl von 0 (Sonntag) bis 6 (Samstag) zurück.

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

Signatur

Date.prototype.getUTCDay()

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

Typ
number
Beschreibung
Eine Ganzzahl von 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()]);
5 Freitag

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());
UTC: 0 Lokal (Europe/Berlin): 1

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
true false

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());
7 1 NaN

// Wichtig · Fallstricke

  • Die Woche beginnt am Sonntag: 0 ist Sonntag, nicht Montag. Für ISO 8601 (Montag = 1, Sonntag = 7) schreibt man getUTCDay() || 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 mit setUTCDate().
  • Ungültige Daten geben NaN zurück. Vor Array-Zugriffen wie namen[date.getUTCDay()] sollte man das prüfen, sonst kommt undefined heraus.
  • 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.