I was wondering if there's a simple way, using moment.js library, to transform a decimal time interval (for example, 1.074 minutes) into its equivalent 'mm:ss' value. I am currently using a function which doesn't work too well with negative times (it outputs the value in '-m:ss' format):
function secTommss(sec){
var min = Math.floor(sec/60)
sec = Math.round(Math.abs(sec) % 60);
return min + ":" + (sec < 10 ? "0" + sec : sec)
}
When a time is expressed as a decimal that includes hours, the hours remain the same upon conversion. Multiply the remaining decimal by 60 to determine the minutes. If that equation produces a decimal number, multiply the decimal by 60 to produce the seconds.
Here is some JavaScript that will do what you are asking:
function minTommss(minutes){
var sign = minutes < 0 ? "-" : "";
var min = Math.floor(Math.abs(minutes));
var sec = Math.floor((Math.abs(minutes) * 60) % 60);
return sign + (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec;
}
Examples:
minTommss(3.5) // "03:30"
minTommss(-3.5) // "-03:30"
minTommss(36.125) // "36:07"
minTommss(-9999.999) // "-9999:59"
You could use moment.js durations, such as
moment.duration(1.234, 'minutes')
But currently, there's no clean way to format a duration in mm:ss like you asked, so you'd be re-doing most of that work anyway.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With