Signatur
Beschreibung
Die Zugriffs-Eigenschaft yearOfWeek liefert das Jahr der Kalenderwoche (nach ISO 8601 das „wochenbasierte Jahr“). Sie gehört immer zu weekOfYear: Erst beide Werte zusammen beschreiben eine Kalenderwoche eindeutig.
Wichtig ist das an Jahreswechseln. Nach ISO 8601 ist die erste Woche eines Jahres die Woche mit dem ersten Donnerstag. Die Tage vom 29. bis 31. Dezember können deshalb schon zu Woche 1 des Folgejahres gehören. Umgekehrt können der 1. bis 3. Januar noch in Woche 52 oder 53 des Vorjahres liegen. In diesen Fällen weicht yearOfWeek von year ab.
Die Eigenschaft ist nur lesbar und hat einen Getter, aber keinen Setter. Nutzen Sie sie überall, wo Sie nach Kalenderwochen rechnen: bei KW-Angaben wie 2020-W53, beim Gruppieren von Daten nach Woche, in Zeiterfassung, Lohnabrechnung oder Sprint-Planung. Wenn Sie nur weekOfYear mit year kombinieren, sind die Ergebnisse an Jahresgrenzen falsch.
Nur der Kalender iso8601 hat derzeit ein festes Wochensystem. Bei allen anderen Kalendern (z. B. gregory, hebrew, japanese) geben yearOfWeek und weekOfYear undefined zurück.
Rückgabewert
undefined, wenn der Kalender kein festes Wochensystem hat (alle Kalender außer iso8601).Beispiele
Jahreswechsel: yearOfWeek weicht von year ab
const neujahr = Temporal.PlainDate.from("2021-01-01"); // ein Freitag
console.log(neujahr.year, neujahr.weekOfYear, neujahr.yearOfWeek);
const silvesterWoche = Temporal.PlainDate.from("2024-12-30"); // ein Montag
console.log(silvesterWoche.year, silvesterWoche.weekOfYear, silvesterWoche.yearOfWeek);
ISO-8601-Wochendatum formatieren (z. B. für Berichte)
const toIsoWeekString = (date) => {
const kw = String(date.weekOfYear).padStart(2, "0");
return `${date.yearOfWeek}-W${kw}-${date.dayOfWeek}`;
};
console.log(toIsoWeekString(Temporal.PlainDate.from("2019-12-30")));
console.log(toIsoWeekString(Temporal.PlainDate.from("2025-06-15")));
Einträge korrekt nach Kalenderwoche gruppieren
const buchungen = ["2020-12-28", "2021-01-01", "2021-01-03", "2021-01-04"];
const proWoche = Map.groupBy(buchungen, (iso) => {
const d = Temporal.PlainDate.from(iso);
// yearOfWeek statt year – sonst landen 28.12. und 01.01. in verschiedenen Gruppen
return `${d.yearOfWeek}-KW${d.weekOfYear}`;
});
console.log([...proWoche.entries()]);
Kalender ohne Wochensystem liefert undefined
const iso = Temporal.PlainDate.from("2021-01-01");
const gregorianisch = iso.withCalendar("gregory");
console.log(iso.yearOfWeek);
console.log(gregorianisch.yearOfWeek);
console.log(gregorianisch.weekOfYear);
// Wichtig · Fallstricke
- Häufiger Fehler:
weekOfYearnicht mityearkombinieren. Das ergibt an Jahresgrenzen falsche Wochen wie „2021-W53“. Nehmen Sie immeryearOfWeek. - Nur lesbar:
with()kennt kein FeldyearOfWeek, undTemporal.PlainDate.from()akzeptiert keine Angabe aus{ yearOfWeek, weekOfYear }. Um ein Datum aus einer Kalenderwoche zu berechnen, gehen Sie z. B. vom 4. Januar aus (der liegt immer in KW 1) und rechnen dann mitadd()undsubtract()weiter. - Kalenderabhängig: Nur bei
iso8601gibt es einen Wert. MitwithCalendar()umgewandelte Daten könnenundefinedliefern. Prüfen Sie das im Code, bevor Sie den Wert verwenden. - Nur ISO-Wochen: Die Wochen beginnen immer am Montag, KW 1 ist die Woche mit dem ersten Donnerstag. Andere regionale Regeln (etwa in den USA: Wochenbeginn Sonntag, KW 1 enthält den 1. Januar) werden nicht abgebildet.
- Browser-Unterstützung: Temporal ist neu und noch nicht überall verfügbar (Firefox ab 139, Chromium ab 144, Safari noch nicht). Für ältere Umgebungen gibt es ein Polyfill, z. B.
@js-temporal/polyfillodertemporal-polyfill.