Момент JS - преобразовать миллисекунды в формат (1 час 7 минут) - PullRequest
0 голосов
/ 27 мая 2020

Мне нужно сделать трансформацию. Я использую MomentJS, и я пытаюсь взять milliseconds и преобразовать их в формат 1 Hour and 7 Mins для example .

Я могу заставить его работать так 1,1 Часы со следующим кодом, где interval - время в мс:

moment
      .duration(interval)
      .asSeconds()
      .toFixed(0)

Как я могу заставить это работать. Возьмите ms и преобразуйте их в удобочитаемые форматы.

Кстати, я пробовал метод humanize, но не стал их рассматривать. Просто к вашему сведению ..

1 Ответ

0 голосов
/ 28 мая 2020

Moment, похоже, не поддерживает то, что вы запрашиваете из коробки, но вы можете получить значения различных единиц времени (годы, месяцы, дни ...) вашей продолжительности, используя функцию get .

Основываясь на этой информации, я собрал пару функций, которые генерируют результат, который вы ищете:

let duration = moment.duration(122101000);

let units = [
  {unit: "years", singular: "Year", plural: "Years"},
  {unit: "months", singular: "Month", plural: "Months"},
  {unit: "days", singular: "Day", plural: "Days"},
  {unit: "hours", singular: "Hour", plural: "Hours"},
  {unit: "minutes", singular: "Minute", plural: "Minutes"},
  {unit: "seconds", singular: "Second", plural: "Seconds"}
];

console.log(output(deconstruct(duration, units)));

function output(entries)
{
  let result = "";
  for (let i = 0; i < entries.length; i++) {
    let entry = entries[i];
    if (i > 0) {
      result += ', ' + (i == entries.length - 1 ? "and " : "");
    }
    result += entry.unitValue + " " + (entry.unitValue == 1 ? entry.unit.singular : entry.unit.plural);
  }
  return result;
}

function deconstruct(duration, units)
{
  let values = [], unitValue;
  for (let unit of units) {
    if (unitValue = duration.get(unit.unit)) {
      values.push({"unitValue": unitValue, "unit": unit})
    }
  }
  return values;
}
<script src="https://cdn.jsdelivr.net/momentjs/2.14.1/moment-with-locales.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...