Signatur
Beschreibung
Die Zugriffseigenschaft daysInWeek einer Temporal.ZonedDateTime-Instanz gibt an, wie viele Tage eine Woche im Kalendersystem dieses Datums hat. Sie ist schreibgeschützt: Es gibt nur einen Getter und keinen Setter.
Welcher Wert herauskommt, hängt vom Kalender ab (calendarId), nicht von der Zeitzone. Im Standardkalender iso8601 und in allen Kalendern, die derzeit in Intl unterstützt werden (z. B. gregory, japanese, hebrew, islamic-umalqura), ist der Wert immer 7. Die Eigenschaft gibt es vor allem, damit Code unabhängig vom Kalender bleibt und nicht fest mit 7 rechnet.
Zusammen mit dayOfWeek (1 bis daysInWeek) kannst du Wochenfortschritte, Tage bis zum Wochenende oder Rasterbreiten für Kalenderansichten berechnen. Wenn du die Uhrzeit nicht brauchst, gibt es die gleiche Eigenschaft auch auf Temporal.PlainDate und Temporal.PlainDateTime.
Rückgabewert
7.Beispiele
Grundlegender Zugriff
const zdt = Temporal.ZonedDateTime.from('2024-03-15T10:30:00[Europe/Berlin]');
console.log(zdt.daysInWeek);
console.log(zdt.dayOfWeek); // Freitag
Unabhängig von Kalender und Zeitzone
const base = Temporal.ZonedDateTime.from('2024-03-15T10:30:00[Asia/Tokyo]');
for (const cal of ['iso8601', 'gregory', 'hebrew', 'japanese']) {
const zdt = base.withCalendar(cal);
console.log(cal, zdt.daysInWeek);
}
Resttage der Woche kalenderunabhängig berechnen
const verbleibendeTage = (zdt) => zdt.daysInWeek - zdt.dayOfWeek;
const jetzt = Temporal.ZonedDateTime.from('2024-03-13T08:00:00[Europe/Berlin]'); // Mittwoch
const wochenende = jetzt.add({ days: verbleibendeTage(jetzt) }).startOfDay();
console.log(`Noch ${verbleibendeTage(jetzt)} Tage bis Wochenende`);
console.log(wochenende.toString());
Wochenfortschritt in Prozent
const zdt = Temporal.Now.zonedDateTimeISO('Europe/Berlin');
const fortschritt = (zdt.dayOfWeek / zdt.daysInWeek) * 100;
console.log(`Woche zu ${fortschritt.toFixed(0)} % vorbei`);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
zdt.daysInWeek = 5wird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einenTypeErroraus. Temporal-Objekte sind unveränderlich. Mitwith()oderadd()bekommst du neue Instanzen. - Nicht fest mit 7 rechnen: Der Wert ist heute zwar immer
7, aber die Spezifikation lässt andere Kalender zu. Kalenderunabhängiger Code sollte deshalbdaysInWeekverwenden. - Zeitzone egal: Sommerzeitwechsel oder Zeitzonenregeln haben keinen Einfluss auf den Wert. Nur der Kalender zählt.
- Nicht mit Wochenenden oder regionalen Wochenanfängen verwechseln: Welcher Tag als Wochenanfang oder Wochenende gilt, beantwortet
daysInWeeknicht. Dafür gibt esIntl.Locale.prototype.getWeekInfo(). - Kompatibilität: Temporal ist noch nicht in allen Umgebungen verfügbar (nativ z. B. in Firefox 139+, in Chromium schrittweise). Für breite Unterstützung brauchst du einen Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.