Метод isSameOrAfter

Метод isSameOrAfter является частью библиотеки Moment.js и используется для сравнения двух объектов даты и времени. Он позволяет определить, является ли момент времени одинаковым с другим или наступает позже него. Этот метод чрезвычайно полезен при работе с временными диапазонами, проверкой дедлайнов, сортировкой событий и логикой планирования.


Синтаксис

momentA.isSameOrAfter(momentB, unit);

Параметры:

  • momentB — объект Moment или строка/дата, с которой выполняется сравнение.
  • unit (опционально) — строка, указывающая единицу измерения для сравнения. Может принимать значения: 'year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'. Если параметр не указан, сравнение выполняется по точной дате и времени.

Возвращаемое значение: Булево значение (true или false):

  • true, если момент momentA совпадает с momentB или находится позже него.
  • false в противном случае.

Примеры использования

Сравнение без указания единицы измерения:

const date1 = moment('2026-05-21T10:00:00');
const date2 = moment('2026-05-21T09:30:00');

console.log(date1.isSameOrAfter(date2)); // true

В этом примере date1 находится позже date2, поэтому метод возвращает true. Если бы времена были одинаковыми, результат также был бы true.


Сравнение с указанием единицы измерения:

const date1 = moment('2026-05-21T10:00:00');
const date2 = moment('2026-05-21T09:30:00');

console.log(date1.isSameOrAfter(date2, 'day')); // true
console.log(date1.isSameOrAfter(date2, 'hour')); // true
console.log(date1.isSameOrAfter(date2, 'minute')); // true
console.log(date1.isSameOrAfter(date2, 'second')); // true

При указании единицы измерения метод игнорирует все более мелкие компоненты времени. Например, при сравнении по day минуты и секунды игнорируются, учитывается только день, месяц и год.


Сравнение с одинаковыми датами:

const date1 = moment('2026-05-21T10:00:00');
const date2 = moment('2026-05-21T10:00:00');

console.log(date1.isSameOrAfter(date2)); // true

Метод возвращает true, так как даты идентичны.


Сравнение с более ранней датой:

const date1 = moment('2026-05-21T10:00:00');
const date2 = moment('2026-05-22T10:00:00');

console.log(date1.isSameOrAfter(date2)); // false
console.log(date1.isSameOrAfter(date2, 'day')); // false

Даже при сравнении по дню, date1 находится раньше date2, поэтому результат остаётся false.


Важные моменты

  • Метод isSameOrAfter не изменяет исходные объекты Moment. Он только выполняет проверку и возвращает булево значение.
  • При работе с часовой зоной необходимо учитывать, что Moment.js сравнивает даты с учётом временной зоны объекта. Для корректного сравнения дат из разных временных зон рекомендуется использовать метод .utc() или привести даты к одной временной зоне.
  • Метод поддерживает сравнение с объектами JavaScript Date, строками в формате ISO или другими объектами Moment.

Совместимость с другими методами

Метод isSameOrAfter тесно связан с другими методами Moment.js для сравнения:

  • isSame — проверяет, совпадают ли даты по указанной единице.
  • isAfter — проверяет, находится ли момент строго позже другого.
  • isBefore и isSameOrBefore — аналогичные проверки для “раньше”.

Пример комбинированного использования:

const start = moment('2026-05-21');
const end = moment('2026-05-25');
const today = moment('2026-05-22');

if (today.isSameOrAfter(start) && today.isSameOrBefore(end)) {
    console.log('Сегодня находится в пределах периода');
}

Такой подход позволяет легко проверять попадание даты в диапазон.


Производительность

Метод isSameOrAfter работает быстро даже при большом количестве сравнений, так как Moment.js хранит внутренние числовые представления времени. Однако для массовых операций с миллионами дат рекомендуется рассматривать использование более лёгких библиотек или встроенного Date объекта для критически производительных сценариев.


Заключение о методе

Метод isSameOrAfter обеспечивает гибкую и точную проверку дат, позволяя выбирать уровень точности сравнения, будь то год, день, час или секунда. Он незаменим для построения логики работы с временными диапазонами, календарями, планировщиками задач и других временных операций в JavaScript.