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
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:
// 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.
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> |