Метод isAfter

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

Синтаксис

moment().isAfter(Moment|String|Number|Date|Array, String);

Параметры:

  1. Moment|String|Number|Date|Array — дата или момент времени, с которым выполняется сравнение.
  2. String (необязательный) — единица измерения для сравнения ('year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'). Если параметр не указан, сравнение происходит по полной дате и времени.

Простейшие примеры

const now = moment();
const future = moment('2026-06-01');

console.log(future.isAfter(now)); // true, future позже текущего момента
console.log(now.isAfter(future)); // false

Если указать единицу измерения, метод проверяет только её уровень, игнорируя более мелкие единицы:

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

console.log(date1.isAfter(date2, 'day')); // false, даты в один день
console.log(date1.isAfter(date2, 'hour')); // true, 12 > 9

Использование с разными типами данных

Метод isAfter гибко работает с различными форматами дат:

  • Строки: "YYYY-MM-DD", "YYYY-MM-DD HH:mm:ss", ISO-формат.
  • Числа: timestamp в миллисекундах.
  • Объекты Date: стандартные объекты JavaScript Date.
  • Массивы: [год, месяц, день, часы, минуты, секунды, миллисекунды].
console.log(moment().isAfter('2026-05-21', 'day')); // true или false в зависимости от текущей даты
console.log(moment().isAfter(new Date(2026, 4, 21))); // месяца считаются с 0, 4 = май
console.log(moment().isAfter([2026, 4, 21])); // аналогично объекту Date

Сравнение с точностью до единицы времени

Метод isAfter позволяет проверять не только полное время, но и определённый уровень времени, что удобно для календарных операций:

const start = moment('2026-05-21 10:00');
const end = moment('2026-05-21 18:30');

console.log(end.isAfter(start, 'hour')); // true
console.log(end.isAfter(start, 'day')); // false

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

Примеры реальных сценариев

  1. Проверка срока действия события
const eventEnd = moment('2026-05-30');
if (moment().isAfter(eventEnd)) {
  console.log('Событие уже завершилось');
} else {
  console.log('Событие ещё активно');
}
  1. Сравнение времени создания записи
const createdAt = moment('2026-05-21T09:00');
if (moment().isAfter(createdAt, 'minute')) {
  console.log('Запись создана более минуты назад');
}
  1. Сравнение с пользовательским вводом
const userInput = moment('2026-06-01', 'YYYY-MM-DD');
if (userInput.isAfter(moment())) {
  console.log('Выбрана будущая дата');
}

Особенности работы

  • Метод возвращает булево значение (true или false), что делает его удобным для условных операторов.
  • Если передан невалидный момент, метод всегда возвращает false.
  • Единицы времени можно комбинировать с другими методами Moment.js для более сложных проверок (isBefore, isSame, diff).

Сравнение моментов с таймзоной

Moment.js корректно обрабатывает объекты с разными временными зонами при использовании Moment Timezone:

const moscow = moment.tz('2026-05-21 12:00', 'Europe/Moscow');
const london = moment.tz('2026-05-21 10:00', 'Europe/London');

console.log(moscow.isAfter(london)); // true, учитывается смещение часового пояса

Комбинация с другими методами

Метод isAfter часто используется вместе с add, subtract и clone для динамических вычислений:

const deadline = moment().add(7, 'days'); // через 7 дней
if (moment().isAfter(deadline.clone().subtract(1, 'days'))) {
  console.log('Остался последний день до дедлайна');
}

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