如何在一个moment.js期间使用format()?

有没有什么办法可以使用持续时间对象的moment.js format方法? 我无法在文档中的任何位置find它,也没有看到它是持续时间对象的属性。

我希望能够做到这样的事情:

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

另外,如果有其他的库可以很容易地适应这种function,我会感兴趣的reccomendations。

谢谢!

我们正在考虑在moment.js中添加某种格式的持续时间。 见https://github.com/timrwood/moment/issues/463

其他可能帮助的图书馆是http://countdownjs.org/和https://github.com/icambron/twix.js

 var ms = 12345; alert(moment.utc(ms).format("HH:mm:ss.SSS")); 

看看JSFiddle

使用这个插件Moment Duration格式 。

例:

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

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

 moment.utc(duration.as('milliseconds')).format('HH:mm:ss') 
 var diff = moment(end).unix() - moment(start).unix(); moment.utc(moment.duration(diff).asMilliseconds()).format("HH:mm:ss.SSS"); 

我用:

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

我在var str中得到“09:30”。

如果您愿意使用不同的JavaScript库, 那么如下所示, numerics.js可以格式化秒(例如1000秒):

 var string = numeral(1000).format('00:00'); // '00:16:40' 

在这些情况下我使用经典格式函数:

 var diff = moment(end).unix() - moment(start).unix(); //use unix function instead of difference moment.unix(diff).format('hh:mm:ss') 

这是一个黑客,因为时间差异被视为一个标准的时间date,一个早期的时代date时间,但它对我们的目标并不重要,你不需要任何插件

如果差异是片刻

 var diff = moment(20111031) - moment(20111010); var formated1 = moment(diff).format("hh:mm:ss"); console.log("format 1: "+formated1); 

将矩时间格式化为string

 var duration = moment.duration(86400000); //value in milliseconds var hours = duration.hours(); var minutes = duration.minutes(); var seconds = duration.seconds(); var milliseconds = duration.milliseconds(); var date = moment().hours(hours).minutes(minutes).seconds(seconds).millisecond(milliseconds); if (is12hr){ return date.format("hh:mm:ss a"); }else{ return date.format("HH:mm:ss"); } 

你不需要.format。 使用这样的持续时间:

 const duration = moment.duration(83, 'seconds'); console.log(duration.minutes() + ':' +duration.seconds()); // output: 1:23 

我在这里find了这个解决scheme: https : //github.com/moment/moment/issues/463

如果您使用angular度添加到您的filter:

 .filter('durationFormat', function () { return function (value) { var days = Math.floor(value/86400000); value = value%86400000; var hours = Math.floor(value/3600000); value = value%3600000; var minutes = Math.floor(value/60000); value = value%60000; var seconds = Math.floor(value/1000); return (days? days + ' days ': '') + (hours? hours + ' hours ': '') + (minutes? minutes + ' minutes ': '') + (seconds? seconds + ' seconds ': '') } }) 

用法示例

 <div> {{diff | durationFormat}} </div> 

原生javascript如何?

 var formatTime = function(integer) { if(integer < 10) { return "0" + integer; } else { return integer; } } function getDuration(ms) { var s1 = Math.floor(ms/1000); var s2 = s1%60; var m1 = Math.floor(s1/60); var m2 = m1%60; var h1 = Math.floor(m1/60); var string = formatTime(h1) +":" + formatTime(m2) + ":" + formatTime(s2); return string; } 

如果必须显示所有的小时数(超过24小时),并且如果不需要前几小时的“0”,则可以用一小段代码来完成格式化:

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