如何将“ 1h30m”样式的持续时间解析为Moment.js持续时间

时间:2019-11-29 03:04:48

标签: javascript momentjs

我想尝试将持续时间字符串转换为moment.js持续时间对象。字符串格式的示例如下:“ 1h30m”,应对应1小时30分钟0秒。

我的第一个想法是使用正则表达式,以便我可以拉动小时,分钟和秒,但是我感觉有一种更有效的处理方式-最终目标是使用这些来计算直到命令运行多长时间已运行-我看到有一个名为momentjs的库,我认为可以解决这个问题,但是文档并没有给出一种清晰的方式来处理我所记格式的持续时间格式。我可以提供到目前为止已编写的代码,尽管我认为这不会有太大帮助。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用moment.js做到这一点-但我不确定是否严格必要,因为它也可以通过简单的字符串操作来实现。

字符串操作方法:

function parseTimeSpan(timeString) {
  let parts = timeString.split("h");
  return {
    hours: Number(parts[0]), 
    minutes: Number(parts[1].slice(0, -1))
  };
}

JsFiddle Here

请注意,这仅适用于同时包含小时和分钟成分且不支持秒数的字符串。

Moment.JS方法:

function parseTimeSpan(timeString) {
  return moment.duration("PT" + timeString.toUpperCase());
}

JsFiddle Here

这种方法更健壮,可以处理更多用例,但速度较慢,并且需要外部库。