Is there a simple way to convert a decimal time (e

2019-01-25 12:44发布

问题:

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)
}

回答1:

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.



回答2:

Using moment:

function formatMinutes(mins){
  return moment().startOf('day').add(mins, 'minutes').format('m:ss');
}


回答3:

using just js, here's a really simple and fast way to do this for up to 12 hours:

function secTommss2(sec){
  return new Date(sec*1000).toUTCString().split(" ")[4]
}