Метод toNow

Метод toNow является удобным инструментом для вычисления относительного времени, показывая, сколько времени прошло с момента определённой даты до текущего момента. Он является частью библиотеки Moment.js и используется для генерации человекочитаемых строк, таких как «5 минут назад» или «через 2 дня».


Синтаксис

momentObj.toNow([withoutSuffix]);

Параметры:

  • withoutSuffix (необязательный, булев тип) — если установлено в true, результат не будет содержать суффикса «назад» или «через». По умолчанию false.

Возвращаемое значение: Строка, представляющая относительное время от текущего момента.


Основные возможности

  1. Отображение прошедшего времени Если объект Moment представляет дату в прошлом, toNow() автоматически формирует строку с суффиксом «назад».

    const pastDate = moment().subtract(3, 'hours');
    console.log(pastDate.toNow()); // "3 часа назад"
  2. Отображение будущего времени Если дата находится в будущем относительно текущего момента, результат содержит суффикс «через».

    const futureDate = moment().add(2, 'days');
    console.log(futureDate.toNow()); // "через 2 дня"
  3. Без суффикса Использование параметра withoutSuffix позволяет получить чистое значение времени без дополнительных слов.

    const pastDate = moment().subtract(15, 'minutes');
    console.log(pastDate.toNow(true)); // "15 минут"

Принцип работы

Метод toNow internally вызывает метод from, передавая в него текущую дату. То есть выражение:

momentObj.toNow();

эквивалентно:

momentObj.from(moment());

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


Локализация

Moment.js поддерживает множество языков. Метод toNow автоматически использует текущую локаль, установленную через moment.locale().

moment.locale('ru');
const pastDate = moment().subtract(1, 'week');
console.log(pastDate.toNow()); // "1 неделя назад"

При смене локали меняются не только единицы измерения, но и суффиксы («назад», «через»). Это особенно полезно для интернационализации интерфейсов.


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

Разные единицы времени:

console.log(moment().subtract(30, 'seconds').toNow()); // "30 секунд назад"
console.log(moment().subtract(5, 'minutes').toNow());  // "5 минут назад"
console.log(moment().subtract(12, 'hours').toNow());   // "12 часов назад"
console.log(moment().subtract(3, 'days').toNow());     // "3 дня назад"
console.log(moment().subtract(2, 'months').toNow());   // "2 месяца назад"
console.log(moment().subtract(1, 'years').toNow());    // "1 год назад"

Для будущего времени:

console.log(moment().add(45, 'minutes').toNow());  // "через 45 минут"
console.log(moment().add(10, 'days').toNow());     // "через 10 дней"

С использованием без суффикса:

console.log(moment().subtract(90, 'seconds').toNow(true)); // "90 секунд"
console.log(moment().add(3, 'weeks').toNow(true));         // "3 недели"

Особенности и рекомендации

  • Метод автоматически округляет значения до ближайшей единицы времени. Например, 90 секунд будет отображаться как «2 минуты», если локаль и формат это предусматривают.
  • Для работы с высокоточными интервалами стоит рассматривать использование других методов, таких как diff, чтобы получить точное количество миллисекунд, секунд или минут.
  • Использование toNow в интерфейсе полезно для динамического отображения времени в социальных сетях, блогах и уведомлениях, так как строки автоматически обновляются относительно текущего момента.

Совместимость

Метод toNow поддерживается во всех актуальных версиях Moment.js. Однако стоит учитывать, что Moment.js считается устаревающей библиотекой и рекомендуется рассматривать альтернативы, такие как Luxon или Day.js, для новых проектов, особенно если важна производительность и поддержка современных стандартов работы с датами.


Взаимосвязь с другими методами Moment.js

  • fromNow — аналог toNow, но вызывается напрямую из текущей даты: moment().fromNow().
  • from — позволяет указать произвольную дату, к которой будет относиться объект Moment: moment('2026-05-21').from(moment('2026-05-20')).
  • diff — возвращает точное числовое различие между датами, полезно для вычислений перед вызовом toNow.

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