Signatur
Beschreibung
setSeconds() ändert die Sekunden-Komponente eines Date-Objekts direkt, also ohne ein neues Objekt anzulegen. Optional lassen sich die Millisekunden im selben Aufruf setzen. Grundlage ist die lokale Zeitzone der Laufzeitumgebung. Für UTC gibt es das Gegenstück setUTCSeconds().
Werte außerhalb des üblichen Bereichs werden übertragen: 60 Sekunden ergeben eine Minute mehr und Sekunde 0, -1 steht für die letzte Sekunde der vorigen Minute. Dadurch eignet sich die Methode gut für Zeitrechnungen wie „jetzt plus 90 Sekunden“, ohne dass man Überläufe von Hand behandeln muss.
Typische Einsatzfälle sind das Runden oder Abschneiden auf volle Minuten (setSeconds(0, 0)), das Berechnen von Ablaufzeiten für Timeouts, Sitzungen oder Caches und das Normalisieren von Zeitstempeln vor einem Vergleich.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $secondsValue Pflicht | number | Ganzzahl für die Sekunden, normalerweise 0–59. Andere Werte werden auf Minuten, Stunden usw. übertragen. Nachkommastellen werden abgeschnitten. |
|
| $msValue | number | aktuelle Millisekunden des Objekts | Optionale Ganzzahl für die Millisekunden, normalerweise 0–999. Überläufe werden auf die Sekunden übertragen. Ohne Angabe bleibt der Wert von getMilliseconds() erhalten. |
Rückgabewert
getTime(). Ist ein Parameter NaN oder war das Datum schon ungültig, ist das Ergebnis NaN und das Datum wird zu Invalid Date.Beispiele
Sekunden gezielt setzen
const d = new Date(2024, 4, 15, 10, 30, 12, 500);
d.setSeconds(45);
console.log(d.getSeconds(), d.getMilliseconds());
Auf volle Minute abschneiden
const now = new Date(2024, 4, 15, 10, 30, 47, 123);
const truncated = new Date(now); // Kopie, Original bleibt unverändert
truncated.setSeconds(0, 0);
console.log(truncated.toLocaleTimeString('de-DE'));
Ablaufzeit berechnen (Überlauf wird übertragen)
const expiresIn = (seconds, from = new Date()) => {
const d = new Date(from);
d.setSeconds(d.getSeconds() + seconds);
return d;
};
const start = new Date(2024, 11, 31, 23, 59, 30);
console.log(expiresIn(90, start).toLocaleString('de-DE'));
Rückgabewert und ungültige Eingaben
const d = new Date(2024, 0, 1, 12, 0, 0);
const ts = d.setSeconds(-1); // letzte Sekunde der vorigen Minute
console.log(ts === d.getTime(), d.toLocaleTimeString('de-DE'));
console.log(d.setSeconds('abc'), String(d));
// Wichtig · Fallstricke
- Verändert das Objekt:
setSeconds()ändert das Original. Wer das ursprüngliche Datum noch braucht, arbeitet vorher mit einer Kopie (new Date(d)). - Rückgabewert: Zurück kommt eine Zahl (Zeitstempel), kein
Date. Verkettungen wied.setSeconds(0).getTime()werfen deshalb einenTypeError. - Lokale Zeit und UTC: Die Methode arbeitet mit der lokalen Zeitzone. Zeitzonen mit einem Versatz, der nicht in ganzen Minuten liegt, sind heute praktisch nicht mehr in Gebrauch. Für serverseitige Logik ist
setUTCSeconds()trotzdem die klarere Wahl. - Keine Schaltsekunden: JavaScript kennt keine Schaltsekunden.
60wird immer auf die nächste Minute übertragen. - Typumwandlung: Die Argumente werden mit
Number()umgewandelt.nullergibt0,undefinedoder ein nicht numerischer String ergebenNaNund machen das Datum ungültig. - Die Methode läuft in allen Browsern und in Node.js. Für neuen Code ist die
Temporal-API als unveränderliche Alternative vorgesehen, wird aber noch nicht überall unterstützt.