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

Temporal.Duration.prototype.seconds

Eigenschaft

Gibt den Sekundenanteil einer <code>Temporal.Duration</code> als ganze Zahl zurück. Der Wert wird nicht in größere oder kleinere Einheiten umgerechnet.

seit JavaScript Temporal (TC39 Stage 3, voraussichtlich ES2026); F Kategorie: method-property

Signatur

get Temporal.Duration.prototype.seconds

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

Typ
number
Beschreibung
Eine ganze Zahl: der Wert des Sekundenfelds. Sie ist positiv, negativ oder 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
30 1 90 0 2 750

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" }));
PT1H2M5S 1 2 5 3725

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);
02:15

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);
-45 -1 PT5M 20

// Wichtig · Fallstricke

  • Kein Gesamtwert: seconds ist nur das Sekundenfeld. Für eine Dauer wie PT1H ist es 0. Die Gesamtdauer in Sekunden liefert total({ unit: "second" }).
  • Keine automatische Umrechnung: Werte über 59 bleiben unverändert, etwa bei { seconds: 90 } oder bei until()/since() mit largestUnit: "second". Für eine Anzeige vorher round({ largestUnit: … }) aufrufen.
  • Schreibgeschützt: Eine Zuweisung wie d.seconds = 5 hat keine Wirkung, im Strict Mode wirft sie einen TypeError. Stattdessen with() verwenden.
  • Vorzeichen: Bei negativen Dauern ist der Wert negativ. Für die Anzeige also Math.abs() oder abs() 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/polyfill oder temporal-polyfill.