Signatur
Beschreibung
Die Zugriffseigenschaft second liefert den Sekundenanteil einer Uhrzeit ohne Datum und ohne Zeitzone (Temporal.PlainTime). Der Wert ist immer eine ganze Zahl zwischen 0 und 59. Bruchteile einer Sekunde stehen in den eigenen Eigenschaften millisecond, microsecond und nanosecond.
Die Eigenschaft ist nur lesbar: Es gibt einen Getter, aber keinen Setter. Temporal.PlainTime-Objekte sind unveränderlich. Um die Sekunde zu ändern, erzeugst du mit with({ second: … }) eine neue Instanz oder verschiebst die Zeit mit add() bzw. subtract().
Typische Einsatzfälle sind eigene Zeitformate (z. B. HH:MM:SS), das Prüfen, ob eine Zeit genau auf einer vollen Minute liegt, und Berechnungen in Timern oder Zeitplänen.
Beispiele
Sekunde einer Uhrzeit auslesen
const zeit = Temporal.PlainTime.from("14:37:52.250");
console.log(zeit.second); // Sekundenanteil
console.log(zeit.millisecond); // Bruchteil getrennt
Sekunde ändern mit with() (unveränderliches Objekt)
const start = Temporal.PlainTime.from("08:15:42");
const geaendert = start.with({ second: 0 });
console.log(start.toString()); // Original bleibt unverändert
console.log(geaendert.toString());
console.log(geaendert.second);
Eigenes Zeitformat HH:MM:SS erzeugen
const pad = (n) => String(n).padStart(2, "0");
const formatiere = (t) => `${pad(t.hour)}:${pad(t.minute)}:${pad(t.second)}`;
const jetzt = Temporal.PlainTime.from({ hour: 9, minute: 5, second: 7 });
console.log(formatiere(jetzt));
Überlauf beim Addieren von Sekunden
const t = Temporal.PlainTime.from("23:59:50");
const spaeter = t.add({ seconds: 15 });
// PlainTime läuft über Mitternacht einfach weiter
console.log(spaeter.toString());
console.log(spaeter.second);
// Wichtig · Fallstricke
- Nur lesbar:
zeit.second = 10ändert nichts (im Strict Mode wird einTypeErrorgeworfen). Nutzewith(). - Keine Schaltsekunden: Temporal kennt keine Sekunde 60. Die Eingabe
\"23:59:60\"wird beifrom()auf59begrenzt. Beiwith({ second: 60 })passiert das auch, außer mit{ overflow: \"reject\" }, dann gibt es einenRangeError. - Bruchteile einer Sekunde sind nicht in
secondenthalten. Für Nachkommastellen nutzemillisecond,microsecondundnanosecond. - Der Getter wirft einen
TypeError, wenn er mit einemthisaufgerufen wird, das keinTemporal.PlainTimeist. - Kompatibilität: Temporal ist noch neu. Firefox unterstützt es ab Version 139, Chrome und Edge ab Version 144. Safari hatte bei Redaktionsschluss noch keine stabile Unterstützung. Für ältere Umgebungen gibt es Polyfills wie
@js-temporal/polyfillodertemporal-polyfill.