Метод isBetween является мощным инструментом для
проверки того, находится ли конкретная дата или момент времени между
двумя другими. Он используется для упрощения логики сравнения дат,
особенно когда нужно учитывать различные варианты включения или
исключения границ диапазона.
moment().isBetween(a, b, [units], [inclusivity])
Параметры:
a — первая граница диапазона. Может быть объектом
Moment, строкой, датой или числом.
b — вторая граница диапазона. Аналогично
a.
units (необязательный) — единицы измерения для
сравнения. Возможные значения:
'year''month''week''day''hour''minute''second''millisecond' (по умолчанию)inclusivity (необязательный) — определяет включение
границ:
'()' — обе границы не включены (по
умолчанию)'[)' — левая включена, правая
исключена'(]' — левая исключена, правая
включена'[]' — обе границы включеныМетод возвращает логическое значение true или
false.
const start = moment('2026-05-01');
const end = moment('2026-05-31');
const target = moment('2026-05-15');
target.isBetween(start, end); // true, обе границы не включены
target.isBetween(start, end, null, '[]'); // true, обе границы включены
target.isBetween(start, end, 'day', '[)'); // true, левая включена, правая исключена
Указание единиц измерения позволяет игнорировать менее значимые части даты. Например, сравнение по дням не учитывает часы и минуты:
const start = moment('2026-05-01T12:00');
const end = moment('2026-05-10T08:00');
const target = moment('2026-05-10T23:00');
target.isBetween(start, end, 'day'); // false, так как сравнивается только дата (10 мая включается только при '[]')
target.isBetween(start, end, 'day', '[]'); // true
Это особенно удобно при проверке календарных диапазонов, когда точное время не имеет значения.
Левая и правая границы обрабатываются гибко с
помощью параметра inclusivity:
| Inclusivity | Описание |
|---|---|
() |
Оба конца исключены |
[) |
Левая включена, правая исключена |
(] |
Левая исключена, правая включена |
[] |
Оба конца включены |
Пример:
const start = moment('2026-05-01');
const end = moment('2026-05-10');
const target = moment('2026-05-01');
target.isBetween(start, end, null, '()'); // false, левая граница не включена
target.isBetween(start, end, null, '[)'); // true, левая граница включена
При работе с датами без учета времени можно обрезать объект Moment до
нужной единицы измерения с помощью метода startOf:
const start = moment('2026-05-01').startOf('day');
const end = moment('2026-05-10').endOf('day');
const target = moment('2026-05-10T15:30');
target.isBetween(start, end, 'day'); // true
Такое использование гарантирует корректную работу метода при игнорировании времени суток.
Метод isBetween можно использовать для проверки текущей
даты в пределах какого-либо периода:
const now = moment();
const promoStart = moment().subtract(3, 'days');
const promoEnd = moment().add(3, 'days');
const isActive = now.isBetween(promoStart, promoEnd, null, '[]'); // true, акция активна сегодня
Это удобно для управления событиями, акциями или дедлайнами.
isBetween строки, Moment автоматически
попытается распознать формат даты. Неправильный формат вернет
false.units ограничивает точность сравнения,
игнорируя меньшие единицы.Метод isBetween является ключевым инструментом для любых
операций с диапазонами времени, обеспечивая точность, гибкость и
читаемость кода при работе с датами в JavaScript.