0

我试图使用此函数以毫秒为单位格式化持续时间,但它对我不起作用:

var msec_num      = parseInt(duration, 10) / 100; 
var hours        = Math.floor(msec_num / 3600 );
var minutes      = Math.floor((msec_num - (hours * 3600)) / 60);
var seconds      = Math.floor((msec_num - (hours * 3600) - (minutes * 60)) / 60 / 1000 );
var milliseconds = ( msec_num - ((hours * 3600) - (minutes * 60) - (seconds)) / 1000 ) * 100;

if (hours   < 10) {hours   = "0"+hours;}
if (minutes < 10) {minutes = "0"+minutes;}
if (seconds < 10) {seconds = "0"+seconds;}
if (milliseconds < 10) {milliseconds = "0"+milliseconds;}

var time    = hours + ":" + minutes + ":" + seconds + ":" + milliseconds;

如果我使用该值(持续时间 = 1091ms)进行测试,它会给我这个:00:00:00:1091 ???

我怎么能弄清楚所有的价值都完美地工作?

4

4 回答 4

2

使用Moment.js的“持续时间”让它变得简单!

var duration = moment.duration(parseInt(duration, 10));
var addZero = function(v) { return (v<10 ? '0' : '') + Math.floor(v); };

var time = addZero(duration.hours()) +
     ':' + addZero(duration.minutes()) +
     ':' + addZero(duration.seconds()) +
     ':' + addZero(duration.milliseconds());
于 2013-10-21T22:37:24.057 回答
2

看起来你有问题100而不是1000

var duration = 1091;
var milliseconds = (duration % 1000); duration = Math.floor(duration/1000);
var seconds = (duration % 60); duration = Math.floor(duration/60);
var minutes = (duration % 60); duration = Math.floor(duration/60);
var hours = duration;
于 2013-10-21T20:17:42.963 回答
1

试试这个 - Moment.js - 一个用于解析、验证、操作和格式化日期的 javascript 日期库。

于 2013-10-21T20:43:29.340 回答
0

如果我阅读 Moment.js 的文档,它会容易得多:

moment(parseInt(duration, 10)).format('h:mm:ss');

如我错了请纠正我。

于 2013-10-22T08:51:30.577 回答