Пошук уроків, статей та іншого контенту
Навчитеся створювати Date з поточного часу, числової мітки та окремих компонентів дати.
DateУ JavaScript об’єкт Date використовують для роботи з датою та часом:
отримання поточних дати й часу;
створення дати за числовою міткою;
створення дати з окремих компонентів;
отримання окремих частин дати: року, місяця, дня, годин, хвилин тощо.
Створити об’єкт дати можна за допомогою конструктора Date:
const date = new Date();
console.log(date);Результат залежить від поточних дати, часу та часового поясу комп’ютера.
Якщо викликати new Date() без аргументів, JavaScript створить об’єкт із поточними датою та часом:
const now = new Date();
console.log(now);Приклад результату:
2026-07-26T12:30:45.123ZФормат відображення в консолі може відрізнятися залежно від середовища виконання.
Метод Date.now() повертає поточний момент часу не як об’єкт Date, а як число:
const timestamp = Date.now();
console.log(timestamp);Це число називають числовою міткою часу, або timestamp. Воно містить кількість мілісекунд від 1 січня 1970 року, 00:00:00 UTC.
За числовою міткою можна знову створити об’єкт Date:
const timestamp = Date.now();
const date = new Date(timestamp);
console.log(date);new Date() і new Date(Date.now()) створюють дату одного й того самого моменту, але перший варіант зазвичай простіший.
Конструктор Date може отримати число — кількість мілісекунд від початку епохи Unix:
const date = new Date(0);
console.log(date);Значення 0 означає початок відліку:
1 січня 1970 року, 00:00:00 UTCНаприклад:
const date = new Date(1000 * 60 * 60 * 24);
console.log(date);У цьому прикладі:
1000 — кількість мілісекунд в одній секунді;
60 — кількість секунд у хвилині;
60 — кількість хвилин у годині;
24 — кількість годин у добі.
Отже, число відповідає одній добі після початку відліку.
Можна створювати дати і для моментів до 1 січня 1970 року:
const date = new Date(-86400000);
console.log(date);Від’ємне значення означає момент часу за одну добу до початку відліку.
Щоб створити дату з року, місяця та інших частин, можна передати їх конструктору Date окремими аргументами:
const date = new Date(2026, 6, 26);
console.log(date);Порядок аргументів такий:
new Date(year, monthIndex, day, hours, minutes, seconds, milliseconds)Наприклад:
const date = new Date(2026, 6, 26, 15, 30, 45);
console.log(date);Цей код створює дату:
2026 рік;
26 число;
15 годин;
30 хвилин;
45 секунд.
У конструкторі Date місяці мають індекси від 0 до 11:
0 — січень;
1 — лютий;
2 — березень;
...;
11 — грудень.
Тому для 26 липня 2026 року потрібно записати:
const date = new Date(2026, 6, 26);
console.log(date);Число 6 означає липень, оскільки січень має індекс 0.
Якщо передати лише рік і місяць, днем буде перше число місяця:
const date = new Date(2026, 6);
console.log(date);Це створить дату 1 липня 2026 року.
Якщо не вказати час, він буде встановлений на початок доби за місцевим часовим поясом:
00:00:00.000Date також може створювати дату з рядка:
const date = new Date("2026-07-26T15:30:00");
console.log(date);Для передбачуваної поведінки краще використовувати стандартний формат ISO 8601:
const date = new Date("2026-07-26T15:30:00Z");
console.log(date);Символ Z вказує, що час задано в UTC.
Рядки дат без часового поясу можуть інтерпретуватися як локальний час. Тому під час обміну датами між сервером і клієнтом важливо явно враховувати часовий пояс.
// Поточна дата й час
const now = new Date();
// Поточний момент як числова мітка
const timestamp = Date.now();
// Дата за числовою міткою
const fromTimestamp = new Date(timestamp);
// Дата з окремих компонентів
// Місяць 6 означає липень
const fromComponents = new Date(2026, 6, 26, 15, 30, 0);
// Дата з рядка у форматі ISO
const fromString = new Date("2026-07-26T15:30:00Z");
console.log("Поточна дата:", now);
console.log("Числова мітка:", timestamp);
console.log("Дата з мітки:", fromTimestamp);
console.log("Дата з компонентів:", fromComponents);
console.log("Дата з рядка:", fromString);Цей приклад можна запустити в консолі браузера або в середовищі Node.js.
Іноді рядок або інше значення неможливо перетворити на коректну дату. У такому разі об’єкт Date міститиме некоректне значення:
const date = new Date("неправильна дата");
console.log(date);Для перевірки можна використати Number.isNaN разом із методом getTime():
const date = new Date("неправильна дата");
if (Number.isNaN(date.getTime())) {
console.log("Дата некоректна");
} else {
console.log("Дата коректна:", date);
}Метод getTime() повертає числову мітку дати. Для некоректної дати він повертає NaN.
Найпоширеніша помилка — передавання номера місяця від 1 до 12:
const date = new Date(2026, 7, 26);
console.log(date);У цьому прикладі 7 — це серпень, а не липень. Для липня потрібно використовувати 6:
const date = new Date(2026, 6, 26);Date використовує мілісекунди. Тому timestamp у секундах потрібно помножити на 1000:
const timestampInSeconds = 1782477000;
const date = new Date(timestampInSeconds * 1000);
console.log(date);Якщо передати секунди без множення, JavaScript сприйме їх як мілісекунди й покаже дату поблизу 1 січня 1970 року.
Для конструктора з компонентами краще завжди використовувати повний рік:
const date = new Date(2026, 6, 26);
console.log(date);Не варто покладатися на двозначні значення року, оскільки вони можуть мати особливу поведінку в конструкторі Date.
Об’єкт Date представляє конкретний момент часу, але під час виведення його значення може показуватися в локальному часовому поясі або в UTC.
Наприклад, одне й те саме значення можна вивести різними методами:
const date = new Date("2026-07-26T15:30:00Z");
console.log(date.toString());
console.log(date.toISOString());toString() показує дату в локальному часовому поясі, а toISOString() — у форматі UTC.
new Date() створює об’єкт із поточними датою та часом.
Date.now() повертає поточний час у мілісекундах.
new Date(timestamp) створює дату за числовою міткою.
new Date(year, monthIndex, day, ...) створює дату з окремих компонентів.
У конструкторі Date січень має індекс 0, а грудень — 11.
Часові мітки JavaScript вимірюються в мілісекундах.
Для рядків дат бажано використовувати формат ISO.
Некоректну дату можна перевірити через Number.isNaN(date.getTime()).