Метод fromNow библиотеки Moment.js используется для
вычисления и отображения относительного времени относительно текущего
момента. Он позволяет легко преобразовать дату в удобочитаемый формат
вроде «5 минут назад», «через 3 дня», «2 месяца назад» и так далее. Этот
метод особенно полезен для интерфейсов, где требуется показать
пользователю временные интервалы в человекопонятном виде.
moment([date]).fromNow([withoutSuffix]);
Параметры:
date (необязательный) – дата, с которой
будет произведён расчёт. Если параметр не указан, берётся текущий момент
(moment()).
withoutSuffix (необязательный) – логическое
значение (true или false).
false (по умолчанию) добавляет суффиксы «назад» или
«через».true возвращает только относительное время без
суффиксов.Возвращаемое значение: строка с относительным временем.
const pastDate = moment().subtract(10, 'minutes');
console.log(pastDate.fromNow()); // "10 минут назад"
const futureDate = moment().add(3, 'days');
console.log(futureDate.fromNow()); // "через 3 дня"
const pastDate = moment().subtract(2, 'hours');
console.log(pastDate.fromNow(true)); // "2 часа"
const eventDate = moment("2026-06-01");
console.log(eventDate.fromNow()); // "через X дней"
Moment.js поддерживает множество языков для корректного отображения относительного времени. Для русской локализации необходимо подключить локаль и активировать её:
moment.locale('ru');
const date = moment().subtract(5, 'minutes');
console.log(date.fromNow()); // "5 минут назад"
Особенности русской локализации:
Метод fromNow автоматически подбирает единицы
времени:
Такой подход обеспечивает естественное отображение времени для пользователя без ручных вычислений.
fromNow часто комбинируется с методами add,
subtract, startOf и endOf:
// Через 2 недели от начала месяца
const startMonth = moment().startOf('month').add(2, 'weeks');
console.log(startMonth.fromNow()); // "через X дней"
// Прошлое начало года
const startYear = moment().startOf('year');
console.log(startYear.fromNow()); // "X месяцев назад"
Moment.js позволяет изменять стандартные пороги для относительного
времени через updateLocale. Например, можно сократить
период «несколько секунд»:
moment.updateLocale('ru', {
relativeTime: {
s: 'секунда',
ss: '%d секунд',
m: 'минута',
mm: '%d минут',
h: 'час',
hh: '%d часов',
d: 'день',
dd: '%d дней',
M: 'месяц',
MM: '%d месяцев',
y: 'год',
yy: '%d лет'
}
});
fromNow,
чтобы время оставалось актуальным.withoutSuffix.moment.locale('ru'), чтобы избежать неоднородного
отображения.Метод fromNow в Moment.js обеспечивает мощный и удобный
инструмент для работы с относительным временем, позволяя разработчикам
создавать человекопонятные интерфейсы без сложных вычислений и
условий.