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

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

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

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

谢谢!


当前回答

使用这个插件Moment Duration Format。

例子:

moment.duration(123, "minutes").format("h:mm");

其他回答

将持续时间转换为ms,然后转换为moment:

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

在这些情况下,我使用经典的format函数:

var diff = moment(end).unix() - moment(start).unix();

//use unix function instead of difference
moment.unix(diff).format('hh:mm:ss')

这是一个hack,因为时间差异被视为一个标准的时刻日期,一个早期的epoch日期时间,但这对我们的目标并不重要,你不需要任何插件

如果必须显示所有的小时(超过24小时),如果小时之前的'0'是不必要的,那么格式化可以用一小行代码完成:

Math.floor(duration.as('h')) + moment.utc(duration.as('ms')).format(':mm:ss')

我使用:

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

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

只需moment.js,不需要任何其他插件

moment().startOf('day').seconds(duration).format('HH:mm:ss')