Signatur
Beschreibung
Die Zugriffs-Eigenschaft second gibt die Sekunden der Uhrzeit eines Temporal.PlainDateTime-Objekts zurück. Der Wert ist immer eine ganze Zahl zwischen 0 und 59. Bruchteile einer Sekunde stehen in den getrennten Eigenschaften millisecond, microsecond und nanosecond.
Die Eigenschaft ist schreibgeschützt, weil Temporal-Objekte unveränderlich sind. Soll die Sekunde geändert werden, erzeugt man mit with({ second: … }) ein neues Objekt. Mit add() oder subtract() verschiebt man die Zeit, dabei werden Überläufe in Minuten, Stunden und Tage automatisch übertragen.
Ein PlainDateTime hat keine Zeitzone. Der Wert von second hängt deshalb nie von der Sommerzeit oder der Systemzeitzone ab. Er gibt genau die gespeicherte Wanduhrzeit wieder. Das passt zum Beispiel für Termine in Formularen, Fahrplänen oder Protokollzeilen ohne Zeitzonenangabe.
Rückgabewert
0 bis 59, nämlich die Sekundenkomponente der Uhrzeit.Beispiele
Sekunde auslesen
const dt = Temporal.PlainDateTime.from('2024-03-15T14:30:45.250');
console.log(dt.second);
console.log(dt.millisecond);
Sekunde per with() ändern (unveränderliches Objekt)
const start = Temporal.PlainDateTime.from('2024-03-15T14:30:45');
// Auf volle Minute setzen, Sub-Sekunden ebenfalls nullen
const gerundet = start.with({ second: 0, millisecond: 0, microsecond: 0, nanosecond: 0 });
console.log(gerundet.toString());
console.log(start.second); // Original bleibt unverändert
Überlauf beim Addieren
const dt = Temporal.PlainDateTime.from('2024-12-31T23:59:50');
const spaeter = dt.add({ seconds: 15 });
console.log(spaeter.second, spaeter.toString());
Zeitstempel formatiert ausgeben
const pad = (n) => String(n).padStart(2, '0');
const dt = new Temporal.PlainDateTime(2024, 6, 1, 8, 5, 7);
const uhrzeit = `${pad(dt.hour)}:${pad(dt.minute)}:${pad(dt.second)}`;
console.log(uhrzeit);
// Wichtig · Fallstricke
- Keine Schaltsekunden: Temporal kennt keine 60. Sekunde. Bei
from('…T23:59:60')wird der Wert standardmäßig auf59begrenzt. Mit{ overflow: 'reject' }wird stattdessen einRangeErrorausgelöst. - Schreibgeschützt:
dt.second = 10ändert nichts und wirft im Strict Mode einenTypeError. Verwendewith(). - Werte über 59 in
with()werden mitoverflow: 'constrain'(Standard) auf 59 begrenzt und nicht in die nächste Minute übertragen. Wer einen Übertrag braucht, nimmtadd(). - Kompatibilität: Temporal ist noch nicht in allen Browsern verfügbar (bisher Firefox 139+ und Chrome 144+; Safari und ältere Node.js-Versionen fehlen). Für den produktiven Einsatz empfiehlt sich ein Polyfill wie
@js-temporal/polyfillodertemporal-polyfill.