Signatur
Beschreibung
Die Zugriffseigenschaft seconds liefert die Anzahl der Sekunden, die im Sekundenfeld einer Temporal.Duration gespeichert sind. Eine Dauer besteht aus zehn getrennten Feldern (years bis nanoseconds). seconds gibt nur das eine Feld zurück, nicht die Gesamtdauer in Sekunden.
Wichtig: Temporal rechnet Einheiten beim Erzeugen nicht automatisch um. Temporal.Duration.from({ seconds: 90 }).seconds ergibt 90 und nicht 30. Umgekehrt ergibt Temporal.Duration.from("PT1M30S").seconds den Wert 30, denn die Minute steht im Feld minutes. Wenn Sie Einheiten umrechnen wollen, nutzen Sie Duration.prototype.round() mit largestUnit. Die Gesamtzahl der Sekunden bekommen Sie mit Duration.prototype.total({ unit: "second" }).
Die Eigenschaft ist schreibgeschützt, denn Temporal.Duration-Objekte sind unveränderlich. Einen anderen Sekundenwert setzen Sie mit with({ seconds: … }). Das erzeugt eine neue Instanz. Bei negativen Dauern ist der Wert negativ oder 0, denn alle Felder einer Dauer haben dasselbe Vorzeichen.
Rückgabewert
0 und hat dasselbe Vorzeichen wie die Dauer. Bruchteile von Sekunden stehen in milliseconds, microseconds und nanoseconds.Beispiele
Sekundenfeld auslesen – ohne Umrechnung
const a = Temporal.Duration.from("PT1M30S");
const b = Temporal.Duration.from({ seconds: 90 });
const c = Temporal.Duration.from("PT2.75S");
console.log(a.seconds, a.minutes); // Minute bleibt eigenes Feld
console.log(b.seconds, b.minutes); // 90 Sekunden werden nicht umgerechnet
console.log(c.seconds, c.milliseconds); // Bruchteile landen in milliseconds
Umrechnen mit round() und Gesamtsekunden mit total()
const d = Temporal.Duration.from({ seconds: 3725 });
// Auf Stunden/Minuten/Sekunden umrechnen
const balanced = d.round({ largestUnit: "hour" });
console.log(balanced.toString());
console.log(balanced.hours, balanced.minutes, balanced.seconds);
// Gesamtdauer in Sekunden (nicht dasselbe wie .seconds!)
console.log(Temporal.Duration.from("PT1H2M5S").total({ unit: "second" }));
Countdown-Anzeige aus der Differenz zweier Uhrzeiten
const start = Temporal.PlainTime.from("10:00:00");
const ende = Temporal.PlainTime.from("10:02:15");
const rest = start.until(ende); // largestUnit standardmäßig "hour"
const anzeige = `${String(rest.minutes).padStart(2, "0")}:${String(rest.seconds).padStart(2, "0")}`;
console.log(anzeige);
Negative Dauer und Ändern mit with()
const neg = Temporal.Duration.from("-PT45S");
console.log(neg.seconds, neg.sign);
const d = Temporal.Duration.from({ minutes: 5, seconds: 20 });
const neu = d.with({ seconds: 0 }); // neue Instanz, d bleibt unverändert
console.log(neu.toString(), d.seconds);
// Wichtig · Fallstricke
- Kein Gesamtwert:
secondsist nur das Sekundenfeld. Für eine Dauer wiePT1Hist es0. Die Gesamtdauer in Sekunden lieferttotal({ unit: "second" }). - Keine automatische Umrechnung: Werte über 59 bleiben unverändert, etwa bei
{ seconds: 90 }oder beiuntil()/since()mitlargestUnit: "second". Für eine Anzeige vorherround({ largestUnit: … })aufrufen. - Schreibgeschützt: Eine Zuweisung wie
d.seconds = 5hat keine Wirkung, im Strict Mode wirft sie einenTypeError. Stattdessenwith()verwenden. - Vorzeichen: Bei negativen Dauern ist der Wert negativ. Für die Anzeige also
Math.abs()oderabs()auf die Dauer anwenden. - Kompatibilität: Temporal gibt es bisher nur in neueren Browsern (Firefox 139+, Chrome 144+). Safari und ältere Umgebungen brauchen ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.