Signatur
Beschreibung
Die Zugriffseigenschaft weeks liest den Wochenanteil einer Temporal.Duration. Sie gibt genau den Wert zurück, der beim Erzeugen der Dauer für Wochen angegeben oder berechnet wurde, z. B. 3 bei P3W2D. Das Vorzeichen stimmt immer mit dem Vorzeichen der gesamten Dauer überein (siehe sign).
Wichtig: Eine Temporal.Duration wird nicht automatisch umgerechnet. Eine Dauer von 14 Tagen hat weeks === 0 und days === 14. Brauchen Sie die Wochen als eigene Einheit, geben Sie beim Berechnen largestUnit: "weeks" an, z. B. bei until()/since() oder round(). Die Gesamtzahl der Wochen als Kommazahl liefert total({ unit: "weeks", relativeTo }).
Die Eigenschaft kann nur gelesen werden. Um den Wochenanteil zu ändern, erzeugen Sie mit with({ weeks: … }) eine neue Dauer, denn Temporal.Duration-Objekte lassen sich nicht verändern.
Rückgabewert
0.Beispiele
Wochenanteil aus einer ISO-8601-Dauer lesen
const d = Temporal.Duration.from("P3W2D");
console.log(d.weeks); // 3
console.log(d.days); // 2
console.log(d.negated().weeks); // -3
Keine automatische Umrechnung von Tagen in Wochen
const d = Temporal.Duration.from({ days: 17 });
console.log(d.weeks); // 0 – es wird nicht umgerechnet
const balanced = d.round({
largestUnit: "weeks",
relativeTo: Temporal.PlainDate.from("2024-01-01"),
});
console.log(balanced.toString()); // P2W3D
console.log(balanced.weeks); // 2
Praxis: Wochen bis zu einem Projekttermin
const start = Temporal.PlainDate.from("2024-01-01");
const deadline = Temporal.PlainDate.from("2024-03-01");
const rest = start.until(deadline, { largestUnit: "weeks" });
console.log(`${rest.weeks} Wochen und ${rest.days} Tage`);
Wochenanteil ändern mit with()
const sprint = Temporal.Duration.from({ weeks: 2 });
const longSprint = sprint.with({ weeks: 3 });
console.log(sprint.weeks); // 2 (unverändert)
console.log(longSprint.toString()); // P3W
// Wichtig · Fallstricke
- Nur lesbar:
weeksist ein Getter ohne Setter. Eine Zuweisung wied.weeks = 5wird im nicht-strikten Modus stillschweigend ignoriert. Im Strict Mode, also auch in ES-Modulen, wirft sie einenTypeError. Nutzen Sie stattdessenwith(). - Keine Umrechnung: Tage werden nicht in Wochen umgerechnet. Für eine Umrechnung brauchen
round()undtotal()mit Wochen als Einheit einrelativeTo, sonst werfen sie einenRangeError. Wochen gelten als Kalendereinheit. - Browser-Unterstützung: Temporal ist noch neu, bisher nur in Firefox 139+ und Chrome/Edge 144+. Für andere Umgebungen, z. B. Safari oder ältere Node.js-Versionen, gibt es das Polyfill
@js-temporal/polyfill. weeksist immer eine ganze Zahl. Bruchteile von Wochen erhalten Sie nur übertotal().