Объект Date позволяет создавать, сравнивать и форматировать дату и время. Используется для отображения текущего времени, вычисления интервалов и работы с таймзонами в веб-приложениях.

Доступно в Baseline в статусе «Widely Available» с 2018-01-29

Создание даты

Сегодня вам бесплатно доступен тренажёр по HTML и CSS.

Объект Date можно создать разными способами:

const now = new Date(); // текущая дата и время

const fromString = new Date('2024-12-25T09:00:00'); // по ISO-строке

const fromComponents = new Date(2024, 11, 25, 9, 0); 
// 25 декабря 2024, 09:00 — обратите внимание: месяц от 0 до 11

const fromMilliseconds = new Date(1700000000000); 
// по миллисекундам от начала эпохи Unix

Получение компонентов даты

Вы можете получить отдельные части даты: год, месяц, день, часы и прочее.

const d = new Date();

console.log(d.getFullYear());  // 2024
console.log(d.getMonth());     // 0–11 (январь = 0)
console.log(d.getDate());      // число месяца
console.log(d.getDay());       // день недели (0 = воскресенье)
console.log(d.getHours());     // часы
console.log(d.getMinutes());   // минуты
console.log(d.getSeconds());   // секунды

Форматирование даты

Удобный способ показать дату в нужной локали — использовать toLocaleString() и его варианты:

const d = new Date();

console.log(d.toLocaleString());        // вся дата и время
console.log(d.toLocaleDateString());    // только дата
console.log(d.toLocaleTimeString());    // только время

console.log(d.toLocaleString('ru-RU', {
  weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'
})); 
// Пример: "понедельник, 25 декабря 2024 г."

Изменение даты

Можно менять любую часть даты через set* методы:

const d = new Date();

d.setFullYear(2030);
d.setMonth(6);      // июль
d.setDate(15);
d.setHours(10);
d.setMinutes(30);

console.log(d.toString()); // изменённая дата

Сравнение и разница между датами

Объекты Date можно сравнивать и вычитать друг из друга:

const start = new Date('2024-01-01');
const end = new Date('2024-12-31');

const diffMs = end - start;
const diffDays = diffMs / (1000 * 60 * 60 * 24);

console.log(`Между датами ${diffDays} дней`);

Работа с UTC и таймзонами

По умолчанию Date работает в локальном времени. Но можно получить/задать UTC-варианты:

const d = new Date();

console.log(d.getHours());      // локальное время
console.log(d.getUTCHours());  // время по UTC

Советы по работе с Date

  • Месяцы считаются с нуля: январь — 0, декабрь — 11.
  • Для надёжной работы с датами используйте ISO-строки и UTC-варианты, особенно если данные идут с сервера.
  • Для сложных вычислений лучше использовать библиотеку date-fns или Luxon.

Объект Date — это базовый инструмент JavaScript для работы с временными данными. Он универсален, но требует внимательности в нюансах: месяцы, таймзоны, локализация. Разобравшись, вы сможете точно управлять датами без сторонних библиотек.

Больше обзоров веб-функций — в телеграм-канале HTML Academy.

Нашли ошибку или опечатку? Напишите нам.