geebv
@geebv

Как убрать округление в Moment.js?

Как получить значение humanize функции без округлений? Пользователю отображается разница дат. Результатом могут быть как минуты так и месяцы. Удобно что функция humanize приводит к человеческому виду. Осталось избавиться от излишнего "очеловечения". В моем случае это лишнее.

var retainValue = function (value) {
    return value.toFixed(2);
};
moment.relativeTimeRounding(retainValue);
moment.duration(22, "hours").humanize(); // a day
moment.duration(3600e3*22, "milliseconds").humanize(); // a day
moment.duration(3600e3*21, "milliseconds").humanize(); // 21 hours

moment.duration((new Date('02/01/2012 11:00')) - (new Date('02/02/2012 9:00')), "milliseconds").humanize();
// got 'a day', want '22 hours'
  • Вопрос задан
  • 1444 просмотра
Решения вопроса 1
DevMan
@DevMan
для момента есть удобный плагин https://github.com/jsmreese/moment-duration-format, который позволяет "крутить" выводом.
https://jsfiddle.net/nph7mcbr/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Там нет округления, это просто функция конвертация времени (duration) в человеко-читаемый формат типа "продолжительность времени".
Sometimes, you want all the goodness of moment#from but you don't want to have to create two moments, you just want to display a length of time.

В документации есть же примеры:
moment.duration(1, "minutes").humanize(); // a minute
moment.duration(2, "minutes").humanize(); // 2 minutes
moment.duration(24, "hours").humanize();  // a day

https://momentjs.com/docs/#/durations/humanize/

Чтобы получить "22 hours" - надо сделать проще:
moment.duration(22, "hours") + "hours"
Ответ написан
@ElfinDarkglow
Все намного проще, как я понимаю:

https://momentjs.com/docs/#/customization/relative...
именно то что Вам надо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы