Метод isSameOrBefore является одним из инструментов
библиотеки Moment.js, предназначенным для сравнения двух объектов даты и
времени. Он позволяет определить, находится ли момент времени
раньше или совпадает с другим моментом времени,
учитывая выбранную единицу измерения (год, месяц, день, час и т.д.).
momentA.isSameOrBefore(momentB [, unit])
Параметры:
momentB — объект Moment.js или строка/дата, с
которой производится сравнение.
unit (необязательный) — единица измерения, по
которой выполняется сравнение. Возможные значения:
'year', 'month', 'week',
'day', 'hour', 'minute',
'second', 'millisecond'.Возвращаемое значение: Boolean —
true, если momentA наступает раньше или
совпадает с momentB по указанной единице измерения; иначе
false.
unit. Если единица измерения
не задана, сравнение выполняется с точностью до
миллисекунды.const date1 = moment('2026-05-21');
const date2 = moment('2026-05-22');
console.log(date1.isSameOrBefore(date2)); // true
console.log(date1.isSameOrBefore(date2, 'day')); // true
console.log(date1.isSameOrBefore(date2, 'month')); // true
console.log(date2.isSameOrBefore(date1, 'day')); // false
momentB может быть строкой в любом формате,
распознаваемом Moment.js, объектом Date или другим объектом
moment.const date1 = moment();
const date2 = new Date(2026, 4, 21); // месяцы нумеруются с 0
console.log(date1.isSameOrBefore(date2)); // true или false в зависимости от текущей даты
const date1 = moment('2026-05-21T10:00:00');
const date2 = moment('2026-05-21T12:00:00');
console.log(date1.isSameOrBefore(date2)); // true
console.log(date1.isSameOrBefore(date2, 'hour')); // true
console.log(date1.isSameOrBefore(date2, 'minute')); // true
console.log(date1.isSameOrBefore(date2, 'second')); // true
true,
если оба момента совпадают по указанной единице измерения:const date1 = moment('2026-05-21');
const date2 = moment('2026-05-21');
console.log(date1.isSameOrBefore(date2)); // true
console.log(date1.isSameOrBefore(date2, 'day')); // true
Сравнение годов
const a = moment('2025-12-31');
const b = moment('2026-01-01');
console.log(a.isSameOrBefore(b, 'year')); // true, 2025 <= 2026
Сравнение месяцев
const a = moment('2026-05-15');
const b = moment('2026-06-01');
console.log(a.isSameOrBefore(b, 'month')); // true
console.log(b.isSameOrBefore(a, 'month')); // false
Сравнение дней с учетом времени
const a = moment('2026-05-21T08:30:00');
const b = moment('2026-05-21T12:00:00');
console.log(a.isSameOrBefore(b, 'day')); // true, так как день одинаковый
console.log(a.isSameOrBefore(b)); // true, учитывается точное время
Использование с массивом или строкой формата ISO
const a = moment('2026-05-21T10:00:00');
console.log(a.isSameOrBefore('2026-05-21T12:00:00')); // true
console.log(a.isSameOrBefore(['2026', '05', '21', '09', '00'])); // true
isBeforeМетод isSameOrBefore является расширением метода
isBefore и отличается тем, что возвращает
true не только при меньшем значении, но и при
равенстве:
const a = moment('2026-05-21');
const b = moment('2026-05-21');
console.log(a.isBefore(b)); // false
console.log(a.isSameOrBefore(b)); // true
isSameOrAfter — противоположная операция, проверяет,
равен ли момент или наступает позже.isBetween — может использоваться вместе для проверки
диапазона дат.diff — позволяет вычислять разницу между моментами, а
isSameOrBefore проверяет их относительное
расположение.clone(), если нужно сохранить
исходный объект Moment.js перед манипуляциями.moment():if (moment().isSameOrBefore(moment('2026-05-21'))) {
console.log('Событие ещё не наступило');
}
Метод isSameOrBefore обеспечивает гибкое и точное
сравнение дат и времени, делая Moment.js мощным инструментом для работы
с календарными и временными данными в JavaScript.