Start · Sprachen · JavaScript · Referenz · Temporal.ZonedDateTime.prototype.daysInWeek

Temporal.ZonedDateTime.prototype.daysInWeek

Eigenschaft

Liefert als positive ganze Zahl, wie viele Tage die Woche im Kalender dieses <code>Temporal.ZonedDateTime</code> hat – im ISO-8601-Kalender immer <code>7</code>.

seit JavaScript Temporal (ES-Proposal Stage 3); Firefox 139+, sons Kategorie: method-property

Signatur

get Temporal.ZonedDateTime.prototype.daysInWeek

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

Typ
number
Beschreibung
Eine positive ganze Zahl mit der Anzahl der Tage pro Woche im Kalender der Instanz. In allen derzeit unterstützten Kalendern ist das 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
7 5

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);
}
iso8601 7 gregory 7 hebrew 7 japanese 7

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());
Noch 4 Tage bis Wochenende 2024-03-17T00:00:00+01:00[Europe/Berlin]

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`);
z. B. "Woche zu 71 % vorbei" (an einem Freitag)

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie zdt.daysInWeek = 5 wird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einen TypeError aus. Temporal-Objekte sind unveränderlich. Mit with() oder add() 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 deshalb daysInWeek verwenden.
  • 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 daysInWeek nicht. Dafür gibt es Intl.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/polyfill oder temporal-polyfill.