Javascript 如何将momentjs持续时间格式化为人类可读?

Javascript 如何将momentjs持续时间格式化为人类可读?,javascript,momentjs,iso8601,Javascript,Momentjs,Iso8601,我有一个ISO 8601持续时间数组,我想求和,然后以人类可读的格式显示。 时间看起来像PT10M33S,pt3h000ms,PT50H23M15S。我过去常常用moment.duration()解析它们,但当我把它们加在一起时,我不知道如何将它们变成可读的东西。花了几个小时后,我发现了这个插件。您可以对duration对象调用.format(),并传递一个字符串,将其格式化为您想要显示的内容。以下是我最后写的内容: function formatDuration(duration, forma

我有一个ISO 8601持续时间数组,我想求和,然后以人类可读的格式显示。
时间看起来像
PT10M33S
pt3h000ms
PT50H23M15S
。我过去常常用
moment.duration()
解析它们,但当我把它们加在一起时,我不知道如何将它们变成可读的东西。

花了几个小时后,我发现了这个插件。您可以对duration对象调用
.format()
,并传递一个字符串,将其格式化为您想要显示的内容。以下是我最后写的内容:

function formatDuration(duration, format_string) {
  var length;
  if (format_string === "long") {
    format = [
      duration.months() === 1 ? "Month" : "Months",
      duration.days() === 1 ? "Day" : "Days",
      duration.hours() === 1 ? "Hour" : "Hours",
      duration.minutes() === 1 ? "Minute" : "Minutes",
      duration.seconds() === 1 ? "Second" : "Seconds"
    ];
    length = duration.format("M [" + format[0] + "] d [" + format[1] +
    "] h [" + format[2] + "] m [" + format[3] + " and] s [" + format[4] + "]");
  } else if (format_string === "short") {
    length = duration.format("M[m] d[d] h:mm:ss");
  } else {
    length = duration.format(format_string);
  };
  return length;
};
那么这个呢:

> var d = moment.duration(125, 's')
undefined
> moment().subtract(d).fromNow().replace(/ ago/, '')
'2 minutes'

根据当前文档,您可以执行以下操作:

duration.humanize();
// or if the duration is given in other values like seconds:
moment.duration(60, "seconds").humanize(); // a minute
要以自定义格式显示持续时间,请执行以下操作:

moment.utc(duration.as('milliseconds')).format('HH:mm:ss');