Момент JS длительность гуманизации более точна - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть длительность момента, скажем, 14 секунд.

const duration = moment.duration(end.diff(startTime));

Если я хочу отобразить эту длительность в виде отформатированной строки, я могу использовать .humanize()

duration.humanize(true)
// in a few seconds

Этоработает нормально, но есть ли способ на данный момент отформатировать это как точную длительность типа in 14 seconds или, для более длительной продолжительности, в in 2 days and 5 hours вместо in 2 days?

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

Вы можете настроить вывод функций относительного времени, таких как humanize(), используя relativeTime клавиши updateLocale и relativeTimeThreshold.

Я не знаю, каков ваш ожидаемый результат для общей длительности, но вы можете использовать следующий код, чтобы получить in 14 seconds для продолжительности 14 секунд:

const startTime = moment();
const end = moment().add(14, 'seconds');
const duration = moment.duration(end.diff(startTime));
console.log( duration.humanize(true) );

moment.relativeTimeThreshold('ss', 60);
moment.updateLocale('en', {
  relativeTime : {
    s: function (number, withoutSuffix, key, isFuture){
      return number + ' seconds';
    }
  }
});

console.log( moment.duration(end.diff(startTime)).humanize(true) );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

Вы также можете взглянуть на это и это подобные вопросы.

0 голосов
/ 26 июня 2019

Возможное решение - использовать другую библиотеку , которая делает это, как указано в OP.

humanizeDuration(3000)      // '3 seconds'
humanizeDuration(2250)      // '2.25 seconds'
humanizeDuration(97320000)  // '1 day, 3 hours, 2 minutes'
0 голосов
/ 18 декабря 2018

Нет.Единственный аргумент, который принимает .humanize() - это переключение суффикса.Если вы проверите источник для внутренней функции, которую использует метод humanize, вы увидите, что он всегда округляет продолжительность.Если вам нужна конкретность, вам нужно реализовать собственный метод с желаемым поведением.

...