Signatur
Beschreibung
Die schreibgeschützte Zugriffs-Eigenschaft dayOfWeek liefert die Position des Datums innerhalb seiner Woche als positive Ganzzahl. Die Zählung beginnt bei 1. Im Standardkalender iso8601 gilt die ISO-8601-Zählung: Montag = 1 bis Sonntag = 7. Anders als bei Date.prototype.getDay() ist Sonntag also nicht 0.
Die Eigenschaft hängt vom Kalender ab. Die Uhrzeit des PlainDateTime spielt keine Rolle, nur der Datumsteil zählt. Wie viele Tage eine Woche im jeweiligen Kalender hat, verrät daysInWeek. Der Wert von dayOfWeek liegt immer zwischen 1 und daysInWeek.
Typische Einsatzfälle sind Wochenend- und Werktagsprüfungen, die Berechnung des nächsten bestimmten Wochentags (etwa „nächster Montag“) und das Anordnen von Terminen in Wochenansichten. Für einen lesbaren Wochentagsnamen verwendet man besser toLocaleString() mit der Option { weekday: "long" } als eine selbst gepflegte Namensliste.
Rückgabewert
1 bis daysInWeek. Im ISO-Kalender steht 1 für Montag und 7 für Sonntag.Beispiele
Wochentag eines Termins ermitteln
const termin = Temporal.PlainDateTime.from("2024-03-15T09:30");
console.log(termin.dayOfWeek);
// Für den Namen besser die Lokalisierung nutzen
console.log(termin.toLocaleString("de-DE", { weekday: "long" }));
Wochenende erkennen
const istWochenende = (dt) => dt.dayOfWeek >= 6; // 6 = Samstag, 7 = Sonntag (ISO)
const samstag = Temporal.PlainDateTime.from("2024-03-16T14:00");
const montag = Temporal.PlainDateTime.from("2024-03-18T08:00");
console.log(istWochenende(samstag), istWochenende(montag));
Nächsten Montag zur gleichen Uhrzeit berechnen
const naechsterMontag = (dt) => {
// Tage bis zum nächsten Montag; ist heute Montag, dann eine Woche später
const tage = (8 - dt.dayOfWeek) % 7 || 7;
return dt.add({ days: tage });
};
const jetzt = Temporal.PlainDateTime.from("2024-03-15T09:30");
console.log(naechsterMontag(jetzt).toString());
Termine nach Wochentag gruppieren
const termine = ["2024-03-11T10:00", "2024-03-13T15:00", "2024-03-18T09:00"]
.map((s) => Temporal.PlainDateTime.from(s));
const nachTag = Object.groupBy(termine, (t) => t.dayOfWeek);
console.log(Object.keys(nachTag));
// Wichtig · Fallstricke
- Andere Zählung als
Date:Date.prototype.getDay()zählt ab Sonntag =0,dayOfWeekdagegen ab Montag =1bis Sonntag =7. Wer Code vonDateportiert, sollte das prüfen, denn hier entstehen oft Fehler um einen Tag. - Schreibgeschützt: Die Eigenschaft hat keinen Setter. Auch
with({ dayOfWeek: 1 })wird nicht unterstützt. Um zu einem bestimmten Wochentag zu springen, rechnet man die Differenz aus und verwendetadd()odersubtract(). - Kalenderabhängig: Bei Nicht-ISO-Kalendern können Wochenlänge und Zählung abweichen. Deshalb nicht fest
7annehmen, sonderndaysInWeekverwenden. - Nicht an die Region gebunden: Der Wert sagt nichts darüber, mit welchem Tag die Woche in einer Region beginnt (in den USA etwa Sonntag). Dafür gibt es
Intl.Locale.prototype.getWeekInfo(). - Browser-Unterstützung: Temporal ist erst seit Kurzem verfügbar (Firefox 139+, Chrome/Edge 144+). Safari und ältere Node.js-Versionen brauchen einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.