Date.now()
Базовый уровень Широко доступен
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Статический метод Date.now() возвращает количество миллисекунд, прошедших с эпохи, которая определяется как полночь 1 января 1970 года, UTC.
Попробуйте
// 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);
Синтаксис
Date.now()
Параметры
Нет.
Возвращаемое значение
Число, представляющее временную метку текущего времени в миллисекундах.
Описание
Уменьшенная точность времени
Для защиты от атак по времени и фингерпринтинга точность Date.now() может быть уменьшена в зависимости от настроек браузера.
Временная метка всегда является целым числом миллисекунд, поэтому ее разрешение ограничено 1 мс во всех контекстах. Это уже удовлетворяет определенным базовым потребностям в безопасности и конфиденциальности.
В Firefox предпочтение privacy.reduceTimerPrecision включено по умолчанию. При стандартных настройках временная метка имеет разрешение 1 мс. Если включено privacy.resistFingerprinting, интервал округления составляет 16,667 мс или интервал, настроенный privacy.resistFingerprinting.reduceTimerPrecision.microseconds, в зависимости от того, что больше. Окончательный результат округляется до целого числа.
Например, в 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 // …
Примеры
Измерение прошедшего времени
Вы можете использовать Date.now() для получения текущего времени в миллисекундах, а затем вычесть предыдущее время, чтобы узнать, сколько времени прошло между двумя вызовами.
const start = Date.now();
doSomeLongRunningProcess();
console.log(`Time elapsed: ${Date.now() - start} ms`);
Для более сложных сценариев вы можете вместо этого использовать API производительности.
Спецификации
| Спецификация |
|---|
| Спецификация языка ECMAScript® 2027 # sec-date.now |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | Bun | Deno | Node.js | |
now |
1 |
12 |
1 |
10.5 |
4 |
18 |
4 |
14 |
4 |
1.0 |
4.4 |
4 |
1.0.0 |
1.0 |
0.10.0 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now