Moment.js предоставляет мощные инструменты для работы с датами и временем, включая возможность сравнения и проверки различных моментов времени. Важнейшие операции включают проверку равенства, последовательности и принадлежности к диапазонам.
Для сравнения двух объектов Moment.js используются методы isBefore, isAfter и isSame. Они позволяют определить относительное положение одного момента по отношению к другому.
const moment = require('moment');
const date1 = moment('2026-05-21');
const date2 = moment('2026-06-01');
console.log(date1.isBefore(date2)); // true
console.log(date1.isAfter(date2)); // false
console.log(date1.isSame(date2)); // false
Ключевые моменты:
year, month,
day, hour, minute,
second).console.log(date1.isSame(date2, 'day')); // false
Метод isBetween позволяет проверить, находится ли момент времени между двумя другими моментами. Метод может включать или исключать границы диапазона.
const start = moment('2026-05-01');
const end = moment('2026-05-31');
const check = moment('2026-05-21');
console.log(check.isBetween(start, end)); // true
console.log(check.isBetween(start, end, null, '[]')); // true, включает границы
Особенности:
(), [),
(], [].Методы isSameOrBefore и isSameOrAfter расширяют возможности сравнения, учитывая равенство с границей.
const now = moment('2026-05-21');
const future = moment('2026-05-21');
console.log(now.isSameOrBefore(future, 'day')); // true
console.log(now.isSameOrAfter(future, 'day')); // true
Методы startOf и endOf позволяют проверять, находится ли момент в начале или конце выбранного периода:
const m = moment('2026-05-21T00:00:00');
console.log(m.isSame(m.clone().startOf('day'))); // true
Прежде чем сравнивать даты, важно убедиться, что они валидны. Метод isValid позволяет проверить корректность объекта Moment.js.
const validDate = moment('2026-05-21');
const invalidDate = moment('2026-13-01');
console.log(validDate.isValid()); // true
console.log(invalidDate.isValid()); // false
Невалидные объекты могут приводить к неожиданным результатам при сравнении, поэтому проверка isValid является обязательной при работе с пользовательским вводом.
Метод get или соответствующие сокращения
(year(), month(), date(),
hour(), minute(), second())
позволяют проверять отдельные части даты.
const m = moment('2026-05-21T15:30:00');
console.log(m.year() === 2026); // true
console.log(m.month() === 4); // true, месяцы в Moment.js считаются с 0
console.log(m.date() === 21); // true
Такое сравнение полезно, когда необходимо определить совпадение конкретного дня недели, месяца или года.
Moment.js предоставляет возможность легко сравнивать момент с текущим временем:
const now = moment();
const event = moment('2026-05-21');
console.log(event.isAfter(now)); // true, если событие в будущем
console.log(event.isBefore(now)); // false
Это упрощает проверку сроков, дедлайнов и других временных условий.
const deadline = moment('2026-05-31');
if (moment().isAfter(deadline)) {
console.log('Срок истек');
}
const events = [
moment('2026-05-20'),
moment('2026-06-05'),
moment('2026-05-25')
];
const start = moment('2026-05-21');
const end = moment('2026-05-30');
const filtered = events.filter(e => e.isBetween(start, end, null, '[]'));
console.log(filtered.map(d => d.format('YYYY-MM-DD'))); // ['2026-05-25']
const meeting = moment('2026-05-21');
if (meeting.day() === 4) { // 4 — четверг
console.log('Встреча в четверг');
}
year(),
month(), date() для точных условий.Эти методы позволяют создавать точные проверки моментов времени, реализовывать фильтрацию, контроль дедлайнов и работу с событиями в приложениях, требующих точного управления датами и временем.