Start · Sprachen · JavaScript · Referenz · Temporal.Duration.prototype.weeks

Temporal.Duration.prototype.weeks

Eigenschaft

Gibt die Anzahl der Wochen einer <code>Temporal.Duration</code> als ganze Zahl zurück. Negative Dauern liefern einen negativen Wert.

seit JavaScript Temporal (TC39-Vorschlag): Firefox 139+, Chrome/Ed Kategorie: method-property

Signatur

get Temporal.Duration.prototype.weeks

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

Typ
number
Beschreibung
Eine ganze Zahl mit der Anzahl der Wochen. Das Vorzeichen entspricht dem der Dauer. Ohne Wochenanteil ist der Wert 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
3 2 -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
0 P2W3D 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`);
8 Wochen und 4 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
2 P3W

// Wichtig · Fallstricke

  • Nur lesbar: weeks ist ein Getter ohne Setter. Eine Zuweisung wie d.weeks = 5 wird im nicht-strikten Modus stillschweigend ignoriert. Im Strict Mode, also auch in ES-Modulen, wirft sie einen TypeError. Nutzen Sie stattdessen with().
  • Keine Umrechnung: Tage werden nicht in Wochen umgerechnet. Für eine Umrechnung brauchen round() und total() mit Wochen als Einheit ein relativeTo, sonst werfen sie einen RangeError. 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.
  • weeks ist immer eine ganze Zahl. Bruchteile von Wochen erhalten Sie nur über total().