Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Дата и время

Даты нужны почти везде: срок доставки, день рождения, время сообщения в чате. В JavaScript дату и время хранит встроенный объект Date. Внутри он держит одно число — сколько миллисекунд прошло с 1 января 1970 года, — а методы переводят его в привычные год, месяц и день.

Текущая дата

new Date() без аргументов создаёт объект с текущими датой и временем — моментом, когда выполнилась эта строка:

const now = new Date();
 
console.log(now.getFullYear() >= 2026); // true

Результат зависит от того, когда и где запущен код, поэтому в остальных примерах дата задана явно.

Конкретная дата

Чтобы создать нужную дату, в new Date() передают год, месяц и день. Месяцы считаются с нуля: январь — 0, декабрь — 11:

const date = new Date(2026, 2, 8);
 
console.log(date.getDate()); // 8

Здесь 2 — это март. Дальше можно передать часы, минуты и секунды: new Date(2026, 2, 8, 14, 30).

Части даты

Методы get... возвращают отдельные части даты:

const date = new Date(2026, 2, 8, 14, 30);
 
console.log(date.getFullYear()); // 2026
console.log(date.getMonth());    // 2
console.log(date.getHours());    // 14
console.log(date.getDay());      // 0

getDay() возвращает день недели: 0 — воскресенье, 1 — понедельник и так далее до 6 — субботы.

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

Методы set... меняют часть даты. Если значение выходит за пределы месяца, дата сама переходит на следующий:

const date = new Date(2026, 0, 30);
 
date.setDate(date.getDate() + 5);
 
console.log(date.getMonth(), date.getDate()); // 1 4

К 30 января прибавили 5 дней и получили 4 февраля. Так считают сроки: «через неделю», «через 30 дней».

Разница между датами

Если вычесть одну дату из другой, получится разница в миллисекундах. Чтобы перевести её в дни, делят на количество миллисекунд в сутках:

const start = new Date(2026, 2, 1);
const end = new Date(2026, 2, 15);
 
const days = Math.round((end - start) / (1000 * 60 * 60 * 24));
 
console.log(days); // 14

Math.round() нужен на случай перехода на летнее время, когда в сутках бывает 23 или 25 часов.

Формат ISO

Для обмена с сервером дату записывают строкой в формате ISO: год, месяц, день, время и часовой пояс. Метод toISOString() переводит дату в такую строку по Гринвичу, а new Date() умеет её прочитать:

const date = new Date('2026-03-08T12:00:00Z');
 
console.log(date.toISOString()); // 2026-03-08T12:00:00.000Z

Буква Z на конце означает время по Гринвичу (UTC).

Частая ошибка

Месяц в new Date() и getMonth() начинается с нуля, и об этом легко забыть. Запись new Date(2026, 3, 1) — это 1 апреля, а не 1 марта:

const date = new Date(2026, 3, 1);
 
console.log(date.getMonth() + 1); // 4

Чтобы показать номер месяца человеку, прибавляйте единицу, а для красивого вывода используйте форматирование из следующего урока.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.