有没有一种简单的方法可以使用moment.js将十进制时间(例如1.074分钟)转换为mm:ss格式?

JAC*_*JAC 8 javascript momentjs

我想知道是否有一种简单的方法,使用moment.js库,将十进制时间间隔(例如,1.074分钟)转换为等效的'mm:ss'值.我目前正在使用一个功能,它在负时间内不能很好地工作(它输出'-m:ss'格式的值):

function secTommss(sec){
 var min = Math.floor(sec/60)
 sec = Math.round(Math.abs(sec) % 60);
 return min + ":" + (sec < 10 ? "0" + sec : sec)
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*int 19

这里有一些JavaScript可以满足您的要求:

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;
}
Run Code Online (Sandbox Code Playgroud)

例子:

minTommss(3.5)        // "03:30"
minTommss(-3.5)       // "-03:30"
minTommss(36.125)     // "36:07"
minTommss(-9999.999)  // "-9999:59"
Run Code Online (Sandbox Code Playgroud)

可以使用moment.js 持续时间,例如

moment.duration(1.234, 'minutes')
Run Code Online (Sandbox Code Playgroud)

但是目前,没有简洁的方法来格式化持续时间mm:ss就像你问的那样,所以无论如何你都要重新做大部分工作.

  • 您可以使用以下代码将持续时间格式化为预期格式:`moment.utc(moment.duration(duration).asMilliseconds())。format('HH:mm')` (2认同)

小智 6

使用时刻:

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

  • 我用你的回答作为灵感;最终得到以下代码,将“0.25”之类的值转换为“00:15”:`moment().startOf('day').add(value, 'hours').format('HH:mm') ` (3认同)