Wie erhält man einen Zeitstempel in JavaScript?

Wie kann ich in JavaScript einen Zeitstempel erhalten?

Etwas Ähnliches wie Unix timestamp, d. h. eine einzelne Zahl, die die aktuelle Zeit und das aktuelle Datum darstellt. Entweder als Zahl oder als String.

Lösung

Kurz und knackig:

+ new Date()

Ein unärer Operator wie plus löst die valueOf-Methode im Date-Objekt aus und liefert den Zeitstempel (ohne jegliche Änderung).

Details:

Auf fast allen aktuellen Browsern können Sie Date.now() verwenden, um den UTC-Zeitstempel in Millisekunden zu erhalten; eine bemerkenswerte Ausnahme ist IE8 und früher (siehe Kompatibilitätstabelle).

Sie können jedoch leicht ein Shim für dieses Problem erstellen:

if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

Um den Zeitstempel in Sekunden zu erhalten, können Sie verwenden:

Math.floor(Date.now() / 1000)

Oder alternativ können Sie verwenden:

Date.now() / 1000 | 0

Das dürfte etwas schneller sein, aber auch weniger lesbar (siehe auch diese Antwort).

Ich würde empfehlen, Date.now() (mit Kompatibilitäts-Shim) zu verwenden. Es ist etwas besser, weil es kürzer ist und kein neues Date-Objekt erzeugt. Wenn Sie jedoch kein Shim und maximale Kompatibilität wünschen, können Sie die Methode "old" verwenden, um den Zeitstempel in Millisekunden zu erhalten:

new Date().getTime()

Diese können Sie dann wie folgt in Sekunden umrechnen:

Math.round(new Date().getTime()/1000)

Sie können auch die oben gezeigte Methode valueOf verwenden:

new Date().valueOf()

Zeitstempel in Millisekunden

var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();

console.log(timeStampInMs, Date.now());
Kommentare (16)
var time = Date.now || function() {
  return +new Date;
};

time();
Kommentare (5)
var timestamp = Number(new Date()); // current time as number
Kommentare (0)