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
.
Нотатка: | Через те, що він базується на мілісекундах від початку епохи Unix, результат може бути великим числом, але його легко конвертувати в секунди, хвилини чи інші одиниці. |
Нотатка: | Метод |
Порада: | Хоча
|
Порада: | Для багатьох застосувань, де потрібно швидко генерувати унікальний ідентифікатор (наприклад, ключі для об'єктів),
|
Порада: | Хоча |
Порада: | Обережно з використанням |
Синтаксис
Date.now()
Параметри
Return
timestamp
Повертає поточний час в мілісекундах, що минули з 1 січня 1970 року по UTC. Значення представлене у вигляді числа типу
Number
.
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1 |
4 |
10.5 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
4 |
Переглядач | ||
---|---|---|
0.10.0 |
1.0 |
Приклади
Приклад демонструє таймер, який використовує Date.now()
для відстеження часу, що минув з моменту натискання кнопки "Старт". Натиснення кнопки знову зупиняє таймер та скидає його значення.
У цьому прикладі ми використовуємо 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} мілісекунд.`);
У цьому прикладі ми комбінуємо величину, отриману за допомогою Date.now()
, з випадковим числом, конвертованим у 16-ковий формат, щоб створити унікальний ідентифікатор. Такий підхід гарантує, що ідентифікатор завжди буде унікальним, навіть якщо функція буде викликана декілька разів протягом однієї мілісекунди.
function generateUniqueID() {
return `${Date.now()}${Math.random().toString(16).substr(2, 8)}`;
}
let objectID = generateUniqueID();
console.log(`Унікальний ID об'єкта: ${objectID}`);
Цей приклад демонструє, як можна використовувати 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();
});