使用Javascript将毫秒转换为分钟和秒

Ell*_*otD 49 javascript milliseconds seconds

Soundcloud的API以毫秒为单位给出其轨道的持续时间.JSON看起来像这样:

"duration": 298999
Run Code Online (Sandbox Code Playgroud)

我尝试了很多我在这里找到的功能无济于事.我只是在寻找能够将这个数字转换成如下所示的东西:

4:59
Run Code Online (Sandbox Code Playgroud)

这是一个接近但不起作用的.它并没有停止在60秒.它一直到99没有任何意义.例如,尝试输入"187810"作为ms的值.

var ms = 298999,
min = Math.floor((ms/1000/60) << 0),
sec = Math.floor((ms/1000) % 60);

console.log(min + ':' + sec);
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

如果你也可以增加几个小时的支持,我将不胜感激.

mae*_*ics 119

function millisToMinutesAndSeconds(millis) {
  var minutes = Math.floor(millis / 60000);
  var seconds = ((millis % 60000) / 1000).toFixed(0);
  return minutes + ":" + (seconds < 10 ? '0' : '') + seconds;
}

millisToMinutesAndSeconds(298999); // "4:59"
millisToMinutesAndSeconds(60999);  // "1:01"
Run Code Online (Sandbox Code Playgroud)

用户HelpingHand在评论中指出return语句应该是

return(秒= = 60?(分钟+ 1)+":00":分钟+":"+(秒<10?"0":"")+秒);

  • @elliotmoss:嗯,这有点像我为你做的工作,不是吗?当然,您可以尝试修改此代码段以添加该功能吗?如果你在完成这项任务时遇到麻烦,甚至可能会问另一个问题? (8认同)
  • 让我们知道,当接近转换到下一分钟时(例如,1:60`),这种解决方案有时会在第二位产生60秒.我通过在最后一行添加一个内联if语句来阻止这种情况发生:`return(seconds == 60?(minutes + 1)+":00":minutes +":"+(seconds <10?"0": "")+秒);`你可以看到它在行动[这里](https://github.com/LNFWebsite/Streamly) (2认同)
  • @maerics不应该将(((millis%60000)/ 1000).toFixed(0)`设为`Math.floor((millis%60000)/ 1000)`,因此`seconds'是数字而不是字符串与另一个数字进行比较。 (2认同)

Mad*_*aks 30

我不太确定为什么这些答案都如此复杂。该Date课程为您提供您所需要的:

const date = new Date(298999);

alert(`${date.getMinutes()}:${date.getSeconds()}`);
Run Code Online (Sandbox Code Playgroud)

尽管上面的内容满足了 op 的要求,但添加此更新版本是为了响应 @ianstarz 关于时区独立性的评论:

const d = new Date(Date.UTC(0,0,0,0,0,0,298999)),
  // Pull out parts of interest
  parts = [
    d.getUTCHours(),
    d.getUTCMinutes(),
    d.getUTCSeconds()
  ],
  // Zero-pad
  formatted = parts.map(s => String(s).padStart(2,'0')).join(':');

document.write(formatted);
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 13

var ms = 298999;
ms = 1000*Math.round(ms/1000); // round to nearest second
var d = new Date(ms);
console.log( d.getUTCMinutes() + ':' + d.getUTCSeconds() ); // "4:59"
Run Code Online (Sandbox Code Playgroud)

此外,如果你想要小时,请使用d.getUTCHours().


Hel*_*and 5

如果要寻找,这是我的贡献

时:分:秒

而是像我一样:

function msConversion(millis) {
  let sec = Math.floor(millis / 1000);
  let hrs = Math.floor(sec / 3600);
  sec -= hrs * 3600;
  let min = Math.floor(sec / 60);
  sec -= min * 60;

  sec = '' + sec;
  sec = ('00' + sec).substring(sec.length);

  if (hrs > 0) {
    min = '' + min;
    min = ('00' + min).substring(min.length);
    return hrs + ":" + min + ":" + sec;
  }
  else {
    return min + ":" + sec;
  }
}
Run Code Online (Sandbox Code Playgroud)