Как сравнить две даты
Короткий ответ
Операторы < и > сравнивают даты как числа миллисекунд:
const start = new Date(2025, 0, 10);
const end = new Date(2025, 1, 1);
console.log(start < end);Результат:
trueРавенство
Для проверки равенства сравнивайте числа из getTime():
const a = new Date(2025, 4, 1);
const b = new Date(2025, 4, 1);
console.log(a.getTime() === b.getTime());Результат:
trueОдин и тот же день
Чтобы не учитывать время, сравните год, месяц и день:
const sameDay = (a, b) =>
a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
console.log(sameDay(new Date(2025, 4, 1, 9, 0), new Date(2025, 4, 1, 18, 30)));Результат:
trueДата уже прошла
Сравните с текущим моментом:
const deadline = new Date(2020, 0, 1);
console.log(deadline < new Date() ? 'expired' : 'active');Результат:
expiredЧастая ошибка
=== сравнивает объекты дат по ссылке, поэтому две одинаковые даты не равны:
const a = new Date(2025, 4, 1);
const b = new Date(2025, 4, 1);
console.log(a === b);Результат:
falseФункции из этого ответа
- Date.prototype.getTime — Возвращает дату как число миллисекунд.