是否有任何方法我可以使用moment.js格式方法持续时间对象?我在文档中找不到它,也没有看到它是持续时间对象的属性。

我希望能够做到以下几点:

var diff = moment(end).unix() - moment(start).unix();
moment.duration(diff).format('hh:mm:ss')

此外,如果有其他库可以轻松地容纳这种功能,我会很有兴趣推荐。

谢谢!


当前回答

这对我来说很管用:

moment({minutes: 150}).format('HH:mm') // 01:30

其他回答

我的特定用例的最佳场景是:

var duration = moment.duration("09:30"),
    formatted = moment.utc(duration.asMilliseconds()).format("HH:mm");

这改进了@Wilson的回答,因为它不访问私有内部属性_data。

我使用:

var duration = moment.duration("09:30");
var str = moment(duration._data).format("HH:mm");

我在var str中得到"09:30"

// set up
let start = moment("2018-05-16 12:00:00"); // some random moment in time (in ms)
let end = moment("2018-05-16 12:22:00"); // some random moment after start (in ms)
let diff = end.diff(start);

// execution
let f = moment.utc(diff.asMilliseconds()).format("HH:mm:ss.SSS");
alert(f);

看看JSFiddle

简短版本(一行代码):

moment.duration(durationInMs).asHours()|0||"00" + ":" + moment.utc(durationInMs).format("mm:ss")

扩展的版本:

export const formatDuration = (durationInMs) => {
    const hours = Math.floor(moment.duration(durationInMs).asHours()) || "00"
    return hours + ":" + moment.utc(durationInMs).format("mm:ss")
}

示例案例:

使用这行代码:

moment.utc(moment.duration(4500, "seconds").asMilliseconds()).format("HH:mm:ss")