Date.now()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The Date.now() static method returns the number of milliseconds elapsed since the epoch, which is defined as the midnight at the beginning of January 1, 1970, UTC.
Try it
// 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()
Parameters
None.
Return value
A number representing the timestamp, in milliseconds, of the current time.
Description
>Reduced time precision
To offer protection against timing attacks and fingerprinting, the precision of Date.now() may be reduced depending on browser settings.
The timestamp is always an integer number of milliseconds, so its resolution is limited to 1 ms in all contexts. This already satisfies certain basic security and privacy needs.
In Firefox, the privacy.reduceTimerPrecision preference is enabled by default. With default settings, the timestamp has 1 ms resolution. If privacy.resistFingerprinting is enabled, the rounding interval is 16.667 ms or the interval configured by privacy.resistFingerprinting.reduceTimerPrecision.microseconds, whichever is larger. The final output is rounded to an integer.
For example, these are possible values 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
// …
Examples
>Measuring time elapsed
You can use Date.now() to get the current time in milliseconds, then subtract a previous time to find out how much time elapsed between the two calls.
const start = Date.now();
doSomeLongRunningProcess();
console.log(`Time elapsed: ${Date.now() - start} ms`);
For more complex scenarios, you may want to use the performance API instead.
Specifications
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-date.now> |