如何在一个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')