Пошук уроків, статей та іншого контенту
Розберете методи отримання компонентів дати та відмінності між локальним і UTC-часом.
Date у JavaScriptДля роботи з датами й часом у JavaScript використовується об’єкт Date.
const now = new Date();
console.log(now);Якщо не передати аргументи до Date, буде створено дату з поточними датою та часом.
Щоб отримати окремі частини дати, наприклад рік, місяць або хвилини, використовують спеціальні методи.
Методи без суфікса UTC повертають значення відповідно до локального часового поясу середовища, у якому виконується код.
const date = new Date();
console.log(date.getFullYear()); // Рік
console.log(date.getMonth()); // Місяць
console.log(date.getDate()); // День місяця
console.log(date.getDay()); // День тижня
console.log(date.getHours()); // Години
console.log(date.getMinutes()); // Хвилини
console.log(date.getSeconds()); // Секунди
console.log(date.getMilliseconds()); // МілісекундиgetFullYear()Повертає рік із чотирьох цифр.
const date = new Date("2025-04-15T12:30:45");
console.log(date.getFullYear()); // 2025getMonth()Повертає номер місяця від 0 до 11:
0 — січень;
1 — лютий;
2 — березень;
11 — грудень.
const date = new Date("2025-04-15T12:30:45");
console.log(date.getMonth()); // 3, тобто квітеньЩоб отримати звичний номер місяця від 1 до 12, потрібно додати одиницю:
const month = date.getMonth() + 1;
console.log(month); // 4getDate()Повертає день місяця від 1 до 31.
const date = new Date("2025-04-15T12:30:45");
console.log(date.getDate()); // 15Метод називається getDate(), а не getDay(), оскільки він повертає саме день місяця.
getDay()Повертає день тижня від 0 до 6:
0 — неділя;
1 — понеділок;
2 — вівторок;
3 — середа;
4 — четвер;
5 — п’ятниця;
6 — субота.
const date = new Date("2025-04-15T12:30:45");
console.log(date.getDay()); // 2, вівторокДля компонентів часу використовують такі методи:
const date = new Date("2025-04-15T12:30:45.123");
console.log(date.getHours()); // 12
console.log(date.getMinutes()); // 30
console.log(date.getSeconds()); // 45
console.log(date.getMilliseconds()); // 123Діапазони значень:
години — від 0 до 23;
хвилини — від 0 до 59;
секунди — від 0 до 59;
мілісекунди — від 0 до 999.
UTC — це всесвітній координований час, який не залежить від локального часового поясу користувача.
Для отримання компонентів UTC використовують методи з префіксом getUTC:
const date = new Date("2025-04-15T12:30:45.123Z");
console.log(date.getUTCFullYear()); // Рік
console.log(date.getUTCMonth()); // Місяць від 0 до 11
console.log(date.getUTCDate()); // День місяця
console.log(date.getUTCDay()); // День тижня
console.log(date.getUTCHours()); // Години
console.log(date.getUTCMinutes()); // Хвилини
console.log(date.getUTCSeconds()); // Секунди
console.log(date.getUTCMilliseconds()); // МілісекундиВідповідність методів:
getFullYear() — getUTCFullYear();
getMonth() — getUTCMonth();
getDate() — getUTCDate();
getDay() — getUTCDay();
getHours() — getUTCHours();
getMinutes() — getUTCMinutes();
getSeconds() — getUTCSeconds();
getMilliseconds() — getUTCMilliseconds().
Методи UTC повертають ту саму дату, але в часовому поясі UTC.
Один об’єкт Date зберігає конкретний момент часу. Під час отримання компонентів цей момент можна інтерпретувати:
у локальному часовому поясі — методами get...;
у UTC — методами getUTC....
Тому значення годин, дня або навіть дати можуть відрізнятися.
const date = new Date("2025-04-15T23:30:00Z");
console.log("Локальний час:");
console.log(date.getFullYear());
console.log(date.getMonth() + 1);
console.log(date.getDate());
console.log(date.getHours());
console.log("UTC:");
console.log(date.getUTCFullYear());
console.log(date.getUTCMonth() + 1);
console.log(date.getUTCDate());
console.log(date.getUTCHours());Результат локальної частини залежить від часового поясу комп’ютера або сервера. UTC-частина буде однаковою в будь-якому середовищі:
UTC:
2025
4
15
23Наприклад, у часовому поясі UTC+2 локальний час буде вже наступного дня:
Локальний час:
2025
4
16
1А в часовому поясі UTC-5 локальний час буде:
Локальний час:
2025
4
15
18Символ Z наприкінці ISO-рядка означає UTC:
const date = new Date("2025-04-15T12:30:00Z");
console.log(date.getUTCHours()); // 12Якщо вказано зміщення часового поясу, JavaScript перетворює значення на внутрішній момент часу:
const date = new Date("2025-04-15T15:30:00+03:00");
console.log(date.getUTCHours()); // 12У цьому прикладі 15:30 у часовому поясі UTC+3 відповідає 12:30 за UTC.
Для навчальних прикладів і обміну датами між системами зручно використовувати ISO-формат із Z або явним зміщенням часового поясу.
Напишімо функцію, яка отримує дату й повертає її компоненти локального та UTC-часу.
function getDateComponents(date) {
return {
local: {
year: date.getFullYear(),
month: date.getMonth() + 1,
dayOfMonth: date.getDate(),
dayOfWeek: date.getDay(),
hours: date.getHours(),
minutes: date.getMinutes(),
seconds: date.getSeconds(),
milliseconds: date.getMilliseconds()
},
utc: {
year: date.getUTCFullYear(),
month: date.getUTCMonth() + 1,
dayOfMonth: date.getUTCDate(),
dayOfWeek: date.getUTCDay(),
hours: date.getUTCHours(),
minutes: date.getUTCMinutes(),
seconds: date.getUTCSeconds(),
milliseconds: date.getUTCMilliseconds()
}
};
}
const date = new Date("2025-04-15T23:30:45.123Z");
console.log(getDateComponents(date));Цей код можна запустити в браузері або Node.js. Значення в полі local залежатимуть від часового поясу середовища, а значення в полі utc будуть стабільними.
Методи Date повертають числа. Для виведення дати у зручному форматі часто потрібно додати початковий нуль.
function pad(value) {
return String(value).padStart(2, "0");
}
function formatUTC(date) {
const year = date.getUTCFullYear();
const month = pad(date.getUTCMonth() + 1);
const day = pad(date.getUTCDate());
const hours = pad(date.getUTCHours());
const minutes = pad(date.getUTCMinutes());
return `${year}-${month}-${day} ${hours}:${minutes} UTC`;
}
const date = new Date("2025-04-15T09:05:00Z");
console.log(formatUTC(date)); // 2025-04-15 09:05 UTCМетод padStart(2, "0") доповнює рядок нулем зліва, якщо його довжина менша за два символи.
Локальний час доречний, коли дата показується користувачеві відповідно до його часового поясу:
const date = new Date();
console.log(
`${date.getDate()}.${date.getMonth() + 1}.${date.getFullYear()}`
);UTC зручно використовувати:
для зберігання дат на сервері;
для передавання дат між різними системами;
для журналів подій;
для порівняння моментів часу;
коли результат не повинен залежати від часового поясу користувача.
Важливо відрізняти момент часу від його відображення. Наприклад, один і той самий момент може бути 12:00 UTC, 14:00 у часовому поясі UTC+2 або 07:00 у часовому поясі UTC-5.
getMonth() поверне значення від 1 до 12const date = new Date("2025-01-15");
console.log(date.getMonth()); // 0, а не 1Правильне отримання номера місяця:
console.log(date.getMonth() + 1); // 1getDate() і getDay()const date = new Date("2025-04-15");
console.log(date.getDate()); // 15 — день місяця
console.log(date.getDay()); // 2 — день тижняgetDate() повертає число від 1 до 31, а getDay() — число від 0 до 6.
Якщо потрібно отримати саме значення за UTC, використовуйте методи з префіксом getUTC:
const date = new Date("2025-04-15T23:30:00Z");
console.log(date.getUTCHours()); // 23 за UTCgetHours() у цьому прикладі може повернути інше значення, оскільки враховує локальний часовий пояс.
Рядок із Z явно задає UTC:
const utcDate = new Date("2025-04-15T12:00:00Z");Зміщення також задає часовий пояс:
const dateWithOffset = new Date("2025-04-15T15:00:00+03:00");Для надійної роботи краще використовувати ISO-рядки з Z або явним зміщенням.
Date зберігає окремі локальні компонентиОб’єкт Date представляє момент часу. Локальний рік, місяць, день і години обчислюються під час виклику методів get..., а UTC-компоненти — під час виклику методів getUTC....
Date представляє конкретний момент часу.
Методи get... повертають компоненти в локальному часовому поясі.
Методи getUTC... повертають компоненти за UTC.
getMonth() повертає місяць від 0 до 11.
getDate() повертає день місяця.
getDay() повертає день тижня від 0 до 6.
Для годин, хвилин, секунд і мілісекунд використовують відповідні методи getHours(), getMinutes(), getSeconds() і getMilliseconds().
Для роботи з UTC використовують getUTCHours(), getUTCMinutes() та інші методи з префіксом getUTC.
Локальний час залежить від часового поясу середовища, а UTC є однаковим у всіх середовищах.