是否有任何方法我可以使用moment.js格式方法持续时间对象?我在文档中找不到它,也没有看到它是持续时间对象的属性。
我希望能够做到以下几点:
var diff = moment(end).unix() - moment(start).unix();
moment.duration(diff).format('hh:mm:ss')
此外,如果有其他库可以轻松地容纳这种功能,我会很有兴趣推荐。
谢谢!
是否有任何方法我可以使用moment.js格式方法持续时间对象?我在文档中找不到它,也没有看到它是持续时间对象的属性。
我希望能够做到以下几点:
var diff = moment(end).unix() - moment(start).unix();
moment.duration(diff).format('hh:mm:ss')
此外,如果有其他库可以轻松地容纳这种功能,我会很有兴趣推荐。
谢谢!
当前回答
如果必须显示所有的小时(超过24小时),如果小时之前的'0'是不必要的,那么格式化可以用一小行代码完成:
Math.floor(duration.as('h')) + moment.utc(duration.as('ms')).format(':mm:ss')
其他回答
如果你愿意使用不同的javascript库,numeric .js可以将秒格式化如下(例如1000秒):
var string = numeral(1000).format('00:00');
// '00:16:40'
为了以这种格式显示工作时间,我需要这样做。 一开始我是这么做的。
moment.utc(totalMilliseconds).format("HH:mm:ss")
然而,任何超过24小时的时间都将重置为0。 但是分和秒是准确的。 所以我只用这部分来表示分和秒。
var minutesSeconds = moment.utc(totalMilliseconds).format("mm:ss")
现在我只需要总时间。
var hours = moment.duration(totalMilliseconds).asHours().toFixed()
为了得到我们都想要的格式,我们只需要把它们粘在一起。
var formatted = hours + ":" + minutesSeconds
如果totalMilliseconds是894600000,这将返回249:30:00。
希望这有帮助。请在评论中留下任何问题。;)
我们正在考虑在moment.js中为持续时间添加某种格式。参见https://github.com/timrwood/moment/issues/463
其他几个可能会有所帮助的库是http://countdownjs.org/和https://github.com/icambron/twix.js
只需moment.js,不需要任何其他插件
moment().startOf('day').seconds(duration).format('HH:mm:ss')
将持续时间转换为ms,然后转换为moment:
moment.utc(duration.as('milliseconds')).format('HH:mm:ss')