Start · Sprachen · JavaScript · Referenz · Date.prototype.setSeconds()

Date.prototype.setSeconds()

Methode

Setzt die Sekunden und optional die Millisekunden eines <code>Date</code>-Objekts nach lokaler Zeit und gibt den neuen Zeitstempel zurück.

seit JavaScript ES1 (msValue seit ES1) – Baseline: alle Browser Kategorie: method-property

Signatur

Date.prototype.setSeconds(secondsValue, msValue)

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

Typ
number
Beschreibung
Der neue Zeitstempel in Millisekunden seit dem 1. Januar 1970, 00:00:00 UTC, also derselbe Wert wie 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());
45 500

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'));
10:30:00

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'));
1.1.2025, 00:01:00

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));
true 11:59:59 NaN Invalid Date

// 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 wie d.setSeconds(0).getTime() werfen deshalb einen TypeError.
  • 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. 60 wird immer auf die nächste Minute übertragen.
  • Typumwandlung: Die Argumente werden mit Number() umgewandelt. null ergibt 0, undefined oder ein nicht numerischer String ergeben NaN und 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.