Signatur
Beschreibung
Die Zugriffseigenschaft dayOfWeek gibt für ein Temporal.PlainDate zurück, auf welchen Tag der Woche das Datum fällt. Der Wert beginnt bei 1. Im ISO-8601-Kalender ("iso8601") und im gregorianischen Kalender gilt 1 = Montag bis 7 = Sonntag.
Genau hier liegt der Unterschied zu Date.prototype.getDay(). Die alte Methode zählt ab 0 und beginnt mit Sonntag, also 0 = Sonntag bis 6 = Samstag. dayOfWeek hält sich dagegen an ISO 8601 und damit an die in Europa übliche Woche. Man muss nicht mehr umrechnen, etwa mit (getDay() + 6) % 7.
Die Eigenschaft ist schreibgeschützt und hat nur einen Getter, es gibt keinen Setter. Um ein Datum auf einen bestimmten Wochentag zu verschieben, rechnet man mit add() oder subtract() und dayOfWeek eine Tagesdifferenz aus. Typische Anwendungen sind das Erkennen von Wochenenden, Kalenderraster, die Suche nach dem nächsten Werktag oder der Beginn einer Woche.
Die Zahl der Tage pro Woche hängt vom Kalender ab und steht in daysInWeek. Bei allen Kalendern, die Temporal derzeit unterstützt, ist sie 7. Die Eigenschaft gibt es genauso bei Temporal.PlainDateTime und Temporal.ZonedDateTime.
Rückgabewert
1 bis daysInWeek (im ISO-Kalender 1 = Montag … 7 = Sonntag).Beispiele
Wochentag eines Datums ermitteln
const datum = Temporal.PlainDate.from("2024-12-24");
console.log(datum.dayOfWeek);
// Name des Wochentags über Intl ausgeben
console.log(datum.toLocaleString("de-DE", { weekday: "long" }));
Wochenende erkennen
const istWochenende = (d) => d.dayOfWeek >= 6;
const heute = Temporal.PlainDate.from("2025-03-15");
console.log(istWochenende(heute)); // Samstag
console.log(istWochenende(heute.add({ days: 2 }))); // Montag
Montag der aktuellen Woche und nächsten Werktag berechnen
const d = Temporal.PlainDate.from("2025-03-13"); // Donnerstag
// Wochenbeginn (Montag)
const montag = d.subtract({ days: d.dayOfWeek - 1 });
console.log(montag.toString());
// Nächster Werktag (Wochenenden überspringen)
const naechsterWerktag = (datum) => {
let n = datum.add({ days: 1 });
while (n.dayOfWeek > 5) n = n.add({ days: 1 });
return n;
};
console.log(naechsterWerktag(Temporal.PlainDate.from("2025-03-14")).toString());
Vergleich mit Date.prototype.getDay()
const alt = new Date(2025, 2, 16); // Sonntag
const neu = Temporal.PlainDate.from("2025-03-16");
console.log(alt.getDay()); // 0-basiert, Sonntag = 0
console.log(neu.dayOfWeek); // 1-basiert, Sonntag = 7
// Wichtig · Fallstricke
- Andere Zählweise als
Date.getDay():dayOfWeekbeginnt bei 1 mit Montag und endet bei 7 mit Sonntag.getDay()beginnt bei 0 mit Sonntag. Wer alten Code umstellt, übersieht diesen Unterschied leicht. Vergleiche wie=== 0für Sonntag schlagen dann stillschweigend fehl. - Nicht als Array-Index verwenden: Weil die Zählung bei 1 beginnt, braucht man bei Namenslisten
namen[d.dayOfWeek - 1]. Besser isttoLocaleString(locale, { weekday: "long" }), weil das die Sprache richtig berücksichtigt. - Wochenbeginn ist regional unterschiedlich:
dayOfWeekfolgt immer ISO 8601 mit Montag als erstem Tag. Ob eine Region die Woche am Sonntag oder Samstag beginnt, verrät die Eigenschaft nicht. Diese Information liefertnew Intl.Locale("en-US").getWeekInfo(), das allerdings nicht überall unterstützt wird. - Schreibgeschützt: Eine Zuweisung ändert nichts und wirft im Strict Mode einen
TypeError. Auchwith({ dayOfWeek: … })wird nicht unterstützt. - Browser-Unterstützung: Temporal ist neu. Stand 2025 unterstützen es nur Firefox ab Version 139 und Chrome ab Version 144, Safari und ältere Node.js-Versionen noch nicht. Für den Produktiveinsatz eignet sich ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.