JS метод Date.now()


Загальний опис

Date.now() – це статичний метод вбудованого об'єкта Date у JavaScript, який повертає поточний час в мілісекундах з моменту початку епохи Unix – 1 січня 1970 року. Цей часовий відлік є стандартом для великої кількості мов програмування та систем, а тому Date.now() забезпечує можливість одержати універсальний часовий штамп.

Одна з ключових особливостей Date.now() полягає в тому, що він надає спосіб швидко отримати поточний часовий штамп, який можна використовувати для різноманітних завдань: від вимірювання тривалості операцій до створення логів із часовими мітками. Для реалізації плавних анімацій, можна використовувати часові штампи для визначення тривалості кадру.

Приклад вимірювання тривалості операції:

let startTime = Date.now();

// Тут якась довга операція, наприклад, сортування масиву
// ...

let endTime = Date.now();
console.log(`Операція тривала `{endTime - startTime} мілісекунд.`);

Цей метод відмінно підходить для вимірювання часу операцій, що виконуються дуже швидко, коли інші методи можуть бути менш точними.

Приклад: Простий таймер

let start = `Date.now()`;

setInterval(() => {
    let elapsed = `Date.now()` - start;
    console.log(`Минуло `{Math.floor(elapsed / 1000)} секунд.`);
}, 1000);

Приклад: Часові мітки для логів

console.log(`[`{new Date(`Date.now()`).toISOString()}] Запуск програми.`);
// ... деякі дії
console.log(`[`{new Date(`Date.now()`).toISOString()}] Завершення програми.`);

Запис даних з часовим штампом може бути корисним для аналізу подій у системі або для пошуку проблем.

Якщо порівнювати Date.now() з іншими методами Date, то головна відмінність полягає в тому, що Date.now() відразу повертає мілісекунди від початку епохи Unix, тоді як інші методи потребують створення екземпляру Date.

автор: Bond

Порада

Хоча Date.now() повертає універсальний часовий штамп, коли ви перетворюєте це значення на об'єкт Date в JavaScript, дата та час будуть представлені з урахуванням місцевого часового поясу. Якщо ваше програмне забезпечення працює в різних часових поясах, обережно обробляйте дати, щоб уникнути непорозумінь.

автор: Bond
Порада

Обережно з використанням Date.now() у середовищах з підвищеною надійністю.У системах, які вимагають строгої послідовності подій або таймінгу (наприклад, фінансові системи), незначні відхилення або зміни у системних годинниках можуть призвести до проблем. Розгляньте можливість використання більш надійних механізмів часу для таких завдань.

автор: Bond
Порада

Хоча Date.now() є швидким способом отримати поточний часовий штамп, невеликі відхилення у часі можуть зробити результати вимірювання неточними. Для точних вимірювань коротких проміжків часу краще використовувати performance.now().

let start = performance.now();
// Виконання деякої дії
let end = performance.now();
console.log(`Операція тривала ${end - start} мілісекунд.`);
автор: Bond
Порада

Для багатьох застосувань, де потрібно швидко генерувати унікальний ідентифікатор (наприклад, ключі для об'єктів), Date.now() може бути корисним. Але пам'ятайте, що великі системи можуть генерувати ідентифікатори швидше, ніж одна мілісекунда, тому додайте додатковий рандомний компонент для гарантії унікальності.

let uniqueID = `${Date.now()}${Math.random()}`;
автор: Bond
Нотатка

Через те, що він базується на мілісекундах від початку епохи Unix, результат може бути великим числом, але його легко конвертувати в секунди, хвилини чи інші одиниці.

автор: Bond
Нотатка

Метод Date.now() завжди повертає UTC час, тобто універсальний координований час, без змінних зон або літнього часу.

автор: Bond

Синтаксис

Date.now()

Повернення

timestamp

Повертає поточний час в мілісекундах, що минули з 1 січня 1970 року по UTC. Значення представлене у вигляді числа типу Number.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 4 10.5 12 9
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 4
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

Цей приклад демонструє, як можна використовувати Date.now() для визначення, чи користувач ще активний на сторінці. Якщо від моменту останньої активності пройшло більше 10 секунд, ми вважаємо користувача неактивним.

let lastActivity = Date.now();

// Кожні 5 секунд перевіряємо, чи користувач ще активний
setInterval(() => {
    if (Date.now() - lastActivity > 10000) { // Якщо з останньої активності пройшло більше 10 секунд
        console.log("Користувач неактивний");
    } else {
        console.log("Користувач активний");
    }
}, 5000);

// Оновлюємо час останньої активності при будь-якому кліці користувача
document.addEventListener('click', () => {
    lastActivity = Date.now();
});
автор: Bond

Приклад демонструє таймер, який використовує Date.now() для відстеження часу, що минув з моменту натискання кнопки "Старт". Натиснення кнопки знову зупиняє таймер та скидає його значення.

автор: Bond

У цьому прикладі ми використовуємо Date.now() для отримання часових штампів перед та після виконання функції longRunningFunction(). Різниця між цими двома часовими штампами дозволяє нам визначити, скільки часу зайняло виконання функції.

// Отримання часового штампу на початку
let startTime = Date.now();

function longRunningFunction() {
  // Тут може бути будь-який код, який виконується деякий час
  for (let i = 0; i < 1000000; i++) {
    // Якась операція
  }
}

longRunningFunction();

// Отримання часового штампу після виконання функції
let endTime = Date.now();

console.log(`Функція виконувалася {endTime - startTime} мілісекунд.`);
автор: Bond

У цьому прикладі ми комбінуємо величину, отриману за допомогою Date.now(), з випадковим числом, конвертованим у 16-ковий формат, щоб створити унікальний ідентифікатор. Такий підхід гарантує, що ідентифікатор завжди буде унікальним, навіть якщо функція буде викликана декілька разів протягом однієї мілісекунди.

function generateUniqueID() {
  return `${Date.now()}${Math.random().toString(16).substr(2, 8)}`;
}

let objectID = generateUniqueID();
console.log(`Унікальний ID об'єкта: ${objectID}`);
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід