Дата и время
Даты нужны почти везде: срок доставки, день рождения, время сообщения в чате. В 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()); // 0getDay() возвращает день недели: 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); // 14Math.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Чтобы показать номер месяца человеку, прибавляйте единицу, а для красивого вывода используйте форматирование из следующего урока.