14

我想知道是否有一种简单的方法,使用 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)
}
4

4 回答 4

29

这里有一些 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;
}

例子:

minTommss(3.5)        // "03:30"
minTommss(-3.5)       // "-03:30"
minTommss(36.125)     // "36:07"
minTommss(-9999.999)  // "-9999:59"

可以使用 moment.js durations,例如

moment.duration(1.234, 'minutes')

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

于 2013-07-11T17:16:52.953 回答
7

Using moment:

function formatMinutes(mins){
  return moment().startOf('day').add(mins, 'minutes').format('m:ss');
}
于 2014-05-18T21:27:08.597 回答
3

仅使用 js,这是一个非常简单且快速的方法,最长可运行 12 小时:

function secTommss2(sec){
  return new Date(sec*1000).toUTCString().split(" ")[4]
}
于 2013-07-11T16:58:53.660 回答
-2

也许我参加聚会有点晚了,但仍然......我的两分钱:

您可以在几秒钟内构建变量,将其解析为日期,然后将其剪切为字符串或您想要使用的任何格式:

let totalTimeInSeconds = 1.074 * 60;
let result = new Date(null, null, null, null, null, totalTimeInSeconds);
console.log(result.toTimeString().split(' ').[0].substring(3));

输出将是:

01:14
于 2020-04-09T14:02:38.937 回答