Search code examples
jquerymilliseconds

JQuery - Formating milliseconds to HH:MM:SS:sss


I have trying to format a duration in milliseconds using this function but it's not working for me :

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;

if I test using the value ( duration = 1091ms ) it gives to me this : 00:00:00:1091 ???

How I can figure out that all value work perfectly ??


Solution

  • Use "duration" of Moment.js to make it easy!

    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());