Die Methode Date.prototype.valueOf() gibt den primitiven Zahlenwert eines Date-Objekts zurück – die Anzahl der Millisekunden seit dem 1. Januar 1970 UTC. Funktional ist sie identisch zu getTime(). Ihre eigentliche Bedeutung liegt jedoch im impliziten Verhalten: Sie wird automatisch von der Sprachlaufzeit aufgerufen, sobald ein Date-Objekt in einem numerischen Kontext erscheint – etwa bei <, >, - oder + mit Zahlen. Genau das macht direkte Date-Vergleiche überhaupt erst möglich.

Funktionsweise

valueOf() wird von der Sprachlaufzeit verwendet, um ein Objekt in eine primitive Zahl zu konvertieren. Ohne diese Methode wäre dateB - dateA nicht möglich, da der --Operator auf primitiven Zahlen arbeitet.

Im Detail:

  • Numerischer Kontext (+, -, <, >, <=, >=): JavaScript ruft valueOf() auf, bekommt den Timestamp und rechnet damit weiter.
  • Loose Equality (==): JavaScript versucht primitivkonvertierung, ruft also valueOf() (oder toString()).
  • Strict Equality (===): Hier wird kein valueOf() aufgerufen – Date-Objekte werden über Referenzgleichheit verglichen, was bei verschiedenen Instanzen mit demselben Timestamp false liefert.

Bei einem ungültigen Date-Objekt wird NaN zurückgegeben.

Syntax

JavaScript Syntax
date.valueOf()

Die Methode erwartet keine Parameter.

Rückgabewert

Eine Zahl: die Millisekunden zwischen dem 1. Januar 1970 UTC und dem repräsentierten Zeitpunkt. Bei einem ungültigen Date-Objekt wird NaN zurückgegeben.

Beispiele

Direkter Aufruf

JavaScript Beispiel
const date = new Date("2026-05-01T00:00:00Z");
console.log(date.valueOf());
Output
1777593600000

Implizite Nutzung beim Vergleich

JavaScript Beispiel
const a = new Date("2026-05-01");
const b = new Date("2026-05-15");

console.log(a < b);
console.log(b - a);
Output
true
1209600000

Identisch zu getTime()

JavaScript Beispiel
const date = new Date("2026-05-01");
console.log(date.valueOf() === date.getTime());
Output
true

Falle: === statt ==

JavaScript Beispiel
const a = new Date("2026-05-01");
const b = new Date("2026-05-01");

console.log(a === b);              // Referenzvergleich
console.log(a == b);               // Auch false: Object zu Object
console.log(a.valueOf() === b.valueOf());  // Korrekt
Output
false
false
true

Ungültiges Datum

JavaScript Beispiel
const invalid = new Date("kein Datum");
console.log(invalid.valueOf());
Output
NaN

Hinweise & verwandte Methoden

  • valueOf() und getTime() sind funktional identisch – getTime() ist aussagekräftiger und sollte bei expliziten Aufrufen bevorzugt werden.
  • Für Vergleiche zweier Date-Objekte: nicht ===, sondern dateA.getTime() === dateB.getTime() oder kürzer +dateA === +dateB.
  • Die Symbol-Methode [Symbol.toPrimitive]() hat höhere Priorität als valueOf() und entscheidet bei mehrdeutigen Konvertierungen, welche String-/Number-Ausgabe gewählt wird.
  • Bei JSON.stringify() wird nicht valueOf() aufgerufen, sondern toJSON() – die Date wird als ISO-String serialisiert, nicht als Timestamp.
/ Weiter

Zurück zu Date

Zur Übersicht