Метод isSame библиотеки Moment.js предназначен для
сравнения двух объектов даты и времени. Он позволяет определить,
совпадают ли два момента по указанной единице измерения времени — год,
месяц, день, час, минута, секунда и так далее. Этот метод возвращает
логическое значение true или false, что делает
его особенно полезным для условных проверок и фильтрации данных по
временным критериям.
momentA.isSame(momentB, [unit]);
momentA — объект Moment.js, с
которым производится сравнение.
momentB — объект Moment.js, с
которым сравнивается momentA.
unit (необязательный
параметр) — строка, задающая единицу измерения времени. Возможные
значения:
'year' — год'month' — месяц'week' — неделя'day' — день'hour' — час'minute' — минута'second' — секунда'millisecond' — миллисекунда (по умолчанию)Если unit не указан, метод сравнивает полные временные
метки (timestamp), включая дату и время с миллисекундами.
Сравнение дат без указания единицы:
const date1 = moment('2026-05-21T12:30:00');
const date2 = moment('2026-05-21T12:30:00');
console.log(date1.isSame(date2)); // true
В данном примере оба объекта совпадают полностью, включая дату и
время, поэтому метод возвращает true.
Сравнение только по дню:
const date1 = moment('2026-05-21T08:15:00');
const date2 = moment('2026-05-21T22:45:00');
console.log(date1.isSame(date2, 'day')); // true
Метод учитывает только дату без времени, поэтому несмотря на разницу
во времени, результат равен true.
Сравнение по месяцу:
const date1 = moment('2026-05-01');
const date2 = moment('2026-05-21');
console.log(date1.isSame(date2, 'month')); // true
Проверка по месяцу игнорирует дни и время суток. Так как обе даты
находятся в мае 2026 года, метод возвращает true.
Единицы времени чувствительны к точности:
Сравнение по 'minute' игнорирует секунды и миллисекунды,
сравнение по 'hour' игнорирует минуты, секунды и
миллисекунды.
Отрицательные даты: Метод корректно работает с датами до эпохи Unix (до 1970 года), сравнивая года, месяцы и дни по заданной единице измерения.
Часовые пояса: Если объекты Moment имеют разные
часовые пояса, результат сравнения может зависеть от локального времени.
Для сравнения UTC следует использовать метод utc():
const date1 = moment.utc('2026-05-21T12:00:00Z');
const date2 = moment.utc('2026-05-21T15:00:00Z');
console.log(date1.isSame(date2, 'day')); // trueСовместимость с библиотечными объектами:
isSame может сравнивать объекты Moment с JavaScript Date
или ISO-строками, так как Moment автоматически преобразует их:
const date1 = moment('2026-05-21');
const date2 = new Date('2026-05-21T00:00:00');
console.log(date1.isSame(date2, 'day')); // trueСравнение с нулевыми объектами: Если передать
null или undefined вместо
momentB, метод возвращает false без выброса
ошибок.
const events = [
moment('2026-05-21T10:00'),
moment('2026-05-21T15:30'),
moment('2026-05-22T09:00')
];
const todayEvents = events.filter(event => event.isSame(moment(), 'day'));
const reportMonth = moment('2026-05-01');
const transactionDate = moment('2026-05-21');
if (transactionDate.isSame(reportMonth, 'month')) {
console.log('Транзакция попадает в отчетный месяц');
}
const selectedDate = moment('2026-05-21');
const currentDate = moment();
if (selectedDate.isSame(currentDate, 'day')) {
console.log('Сегодня выбранная дата');
}
true, если два момента совпадают по
указанной единице измерения времени.Метод isSame является мощным инструментом для точного и
гибкого сравнения дат и времени в различных сценариях веб-разработки и
обработки данных.