В библиотеке Moment.js работа с датами и временем осуществляется с
помощью объектов moment(), которые предоставляют широкий
набор методов для вычислений и форматирования. Одной из часто
используемых операций является вычисление разницы между двумя моментами
времени.
diff()Для получения разницы между двумя датами используется метод
diff. Синтаксис метода следующий:
momentA.diff(momentB, unit, floating)
'milliseconds', 'seconds',
'minutes', 'hours', 'days',
'weeks', 'months', 'years'. Если
параметр не указан, разница возвращается в миллисекундах по
умолчанию.true
или false). Если true, результат возвращается
в виде дробного числа. Если false или не указан, результат
округляется вниз до целого числа.По умолчанию diff возвращает разницу в миллисекундах,
что позволяет производить точные вычисления без потери точности:
const start = moment('2026-05-21T10:00:00');
const end = moment('2026-05-21T10:00:05');
const diffMs = end.diff(start); // 5000 миллисекунд
Особенности:
A раньше B, результат будет
отрицательным:const diffNegative = start.diff(end); // -5000
'milliseconds' делает вычисление
максимально точным и пригодным для таймеров, логирования событий и
высокоточных измерений.Если требуется дробная точность, можно применить третий параметр
true:
const start = moment('2026-05-21T10:00:00.123');
const end = moment('2026-05-21T10:00:01.456');
const diffMsFloating = end.diff(start, 'milliseconds', true); // 1333.0
Такой подход удобен для вычисления интервалов в сложных системах, где важно учитывать миллисекунды без округления.
Метод diff позволяет не только вычислять разницу, но и
использовать её для логики сравнения:
if (moment().diff(moment('2026-05-21T12:00:00')) > 0) {
console.log('Событие уже прошло');
} else {
console.log('Событие ещё впереди');
}
Такой подход эффективен при работе с таймерами, дедлайнами и проверкой сроков в реальном времени.
Хотя diff может сразу вернуть значение в нужной единице,
иногда удобно сначала получить миллисекунды, а затем преобразовать их
вручную:
const diffMs = end.diff(start); // 5000 миллисекунд
const diffSeconds = diffMs / 1000; // 5 секунд
const diffMinutes = diffMs / (1000 * 60); // 0.0833 минуты
Такой способ полезен при накоплении статистики и последующем форматировании интервалов.
diff
учитывает временные зоны объектов Moment. Для корректных вычислений в
разных часовых поясах рекомендуется использовать метод
.utc() или явно указывать смещение времени.const start = moment('2026-05-21T08:30:15.500');
const end = moment('2026-05-21T10:45:30.750');
const diffMs = end.diff(start); // 8130250 миллисекунд
const diffSeconds = diffMs / 1000; // 8130.25 секунд
const diffMinutes = diffMs / (1000 * 60); // 135.5041667 минут
const diffHours = diffMs / (1000 * 60 * 60); // 2.25840278 часов
Таким образом, Moment.js позволяет получать разницу между датами с высокой точностью и гибко работать с миллисекундами, что делает библиотеку идеальным инструментом для управления временем и интервалами в JavaScript.