Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Date.now()

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

Die Date.now() statische Methode gibt die Anzahl der Millisekunden zurück, die seit dem epoch vergangen sind, welcher als Mitternacht am Anfang des 1. Januar 1970, UTC, definiert ist.

Probieren Sie es aus

// This example takes 2 seconds to run
const start = Date.now();

console.log("starting timer...");
// Expected output: "starting timer..."

setTimeout(() => {
  const ms = Date.now() - start;

  console.log(`seconds elapsed = ${Math.floor(ms / 1000)}`);
  // Expected output: "seconds elapsed = 2"
}, 2000);

Syntax

js
Date.now()

Parameter

Keine.

Rückgabewert

Eine Zahl, die den Zeitstempel in Millisekunden der aktuellen Zeit darstellt.

Beschreibung

Reduzierte Zeitpräzision

Um Schutz vor Timing-Angriffen und Fingerprinting zu bieten, kann die Genauigkeit von Date.now() abhängig von den Browsereinstellungen verringert werden.

Der Zeitstempel ist immer eine ganze Anzahl von Millisekunden, daher ist seine Auflösung in allen Kontexten auf 1 ms beschränkt. Dies erfüllt bereits bestimmte grundlegende Sicherheits- und Datenschutzanforderungen.

In Firefox ist die privacy.reduceTimerPrecision-Einstellung standardmäßig aktiviert. Bei den Standardeinstellungen hat der Zeitstempel eine Auflösung von 1 ms. Wenn privacy.resistFingerprinting aktiviert ist, beträgt das Rundungsintervall 16.667 ms oder das Intervall, das durch privacy.resistFingerprinting.reduceTimerPrecision.microseconds konfiguriert ist, je nachdem, welches größer ist. Das Endergebnis wird auf eine ganze Zahl gerundet.

Zum Beispiel sind dies mögliche Werte in Firefox:

js
// Reduced time precision (1 ms) with default settings
Date.now();
// Might be:
// 1519211809934
// 1519211810363
// 1519211811671
// …

// Reduced time precision with `privacy.resistFingerprinting` enabled
Date.now();
// Might be:
// 1519129853489
// 1519129853506
// 1519129853522
// …

Beispiele

Erfassene Zeit messen

Sie können Date.now() verwenden, um die aktuelle Zeit in Millisekunden zu erhalten, und dann eine vorherige Zeit subtrahieren, um herauszufinden, wie viel Zeit zwischen den beiden Aufrufen vergangen ist.

js
const start = Date.now();
doSomeLongRunningProcess();
console.log(`Time elapsed: ${Date.now() - start} ms`);

Für komplexere Szenarien möchten Sie möglicherweise stattdessen die Performance-API verwenden.

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-date.now

Browser-Kompatibilität

Siehe auch