Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript将毫秒转换为分钟和秒_Javascript_Milliseconds_Seconds - Fatal编程技术网

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

使用Javascript将毫秒转换为分钟和秒,javascript,milliseconds,seconds,Javascript,Milliseconds,Seconds,Soundcloud的API将其曲目的持续时间设置为毫秒。JSON如下所示: "duration": 298999 4:59 我在这里尝试了很多功能,但都没有用。我只是想把这个数字转换成这样: "duration": 298999 4:59 这是一个接近但不起作用的。它不会在60秒停止计时。它一直到99,这毫无意义。例如,尝试输入“187810”作为ms的值 var ms = 298999, min = Math.floor((ms/1000/60) << 0), sec =

Soundcloud的API将其曲目的持续时间设置为毫秒。JSON如下所示:

"duration": 298999
4:59
我在这里尝试了很多功能,但都没有用。我只是想把这个数字转换成这样:

"duration": 298999
4:59
这是一个接近但不起作用的。它不会在60秒停止计时。它一直到99,这毫无意义。例如,尝试输入“187810”作为ms的值

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

console.log(min + ':' + sec);
var ms=298999,

最小值=数学地板((ms/1000/60),含小时、0分钟和秒:

var ms = 298999;
var d = new Date(1000*Math.round(ms/1000)); // round to nearest second
function pad(i) { return ('0'+i).slice(-2); }
var str = d.getUTCHours() + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds());
console.log(str); // 0:04:59

函数毫秒和秒(毫秒){
var分钟=数学地板(毫/60000);
变量秒=((毫秒%60000)/1000).toFixed(0);
返回分钟+“:”+(秒数<10?'0':“”)+秒;
}
毫秒和秒(298999);/“4:59”
毫秒和秒(60999);/“1:01”
正如用户在评论中指出的,返回语句应为:

return (
  seconds == 60 ?
  (minutes+1) + ":00" :
  minutes + ":" + (seconds < 10 ? "0" : "") + seconds
);
返回(
秒=60?
(分钟+1)+“:00”:
分钟+“:”+(秒<10?:“)+秒
);

可能有更好的方法来完成这项工作,但它可以完成工作:

var ms = 298999;
var min = ms / 1000 / 60;
var r = min % 1;
var sec = Math.floor(r * 60);
if (sec < 10) {
    sec = '0'+sec;
}
min = Math.floor(min);
console.log(min+':'+sec);
var-ms=298999;
var最小值=ms/1000/60;
var r=最小值%1;
var sec=数学楼层(r*60);
如果(第10节){
秒='0'+秒;
}
最小值=数学楼层(最小值);
console.log(最小+':'+秒);

不知道为什么会有事件,但oment.js不提供此类功能,如果您来到这里,并且已经在使用moment.js,请尝试以下方法:

function formatDuration(ms) {
  var duration = moment.duration(ms);
  return Math.floor(duration.asHours()) + moment.utc(duration.asMilliseconds()).format(":mm:ss");
}
您将得到类似于x:xx:xx的结果

在这种情况下,如果持续时间小于60分钟,您可能希望跳过该小时

function formatDuration(ms) {
  var duration = moment.duration(ms);
  if (duration.asHours() > 1) {
    return Math.floor(duration.asHours()) + moment.utc(duration.asMilliseconds()).format(":mm:ss");
  } else {
    return moment.utc(duration.asMilliseconds()).format("mm:ss");
  }
}

这篇文章介绍了这一时刻的解决方法。

如果您想在秒后显示小时、厘米秒或毫秒,如1:02:32.21,这段代码将做得更好 如果用于手机,即使在屏幕锁定后,计时器也会显示正确的时间

00:00.00
var d=新日期();
var n=d.getTime();
var startTime=n;
var-tm=0;
函数updateTimer(){
d=新日期();
n=d.getTime();
var currentTime=n;
tm=(当前时间开始时间);
//tm+=1;
//在塞贡多的中心有一个计时器
//tm=tm*10;
var小时=数学楼层(tm/1000/60/60);
var分钟=数学地板(tm/60000)%60;
变量秒=((tm/1000)%60);
//saca los decimales ej 2 d{0,2}
var seconds=seconds.toString().match(/^-?\d+(?:\。\d{0,-1})/)[0];
变量毫秒=(“00”+tm).slice(-3);
五分之一秒;
//在塞贡多的中心有一个计时器
//tm=tm/10;
厘米秒=毫秒/10;
厘米秒=(厘米秒).toString().match(/^-?\d+(?:\。\d{0,-1})/)[0];
分钟=(分钟<10?'0':'')+分钟;
秒=(秒<10?'0':'')+秒;
厘米秒=(厘米秒<10?'0':'')+厘米秒;
小时数=小时数+(小时数>0?':':':';
如果(小时==0){
小时='';
}
document.getElementById(“timer”).innerHTML=hours+minutes+':“+seconds+.”+centisonds+”;
}
var timerInterval=setInterval(updateTimer,10);
//clearInterval(timerInterval);

这是我在寻找

h:mm:ss

相反,我是:

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;
  }
}
最好的就是这个

function msToTime(duration) {
var milliseconds = parseInt((duration%1000))
    , seconds = parseInt((duration/1000)%60)
    , minutes = parseInt((duration/(1000*60))%60)
    , hours = parseInt((duration/(1000*60*60))%24);

hours = (hours < 10) ? "0" + hours : hours;
minutes = (minutes < 10) ? "0" + minutes : minutes;
seconds = (seconds < 10) ? "0" + seconds : seconds;

return hours + ":" + minutes + ":" + seconds + "." + milliseconds;
}
函数msToTime(持续时间){
var毫秒=parseInt((持续时间%1000))
,秒=parseInt((持续时间/1000)%60)
,分钟=parseInt((持续时间/(1000*60))%60)
,小时=parseInt((持续时间/(1000*60*60))%24);
小时数=(小时数<10)?“0”+小时数:小时数;
分钟=(分钟<10)?“0”+分钟:分钟;
秒=(秒<10)?“0”+秒:秒;
返回时数+“:“+分钟+”:“+秒+”+毫秒;
}
它将返回00:04:21.223
然后,您可以根据需要格式化此字符串。

仅适用于:

const minute = Math.floor(( milliseconds % (1000 * 60 * 60)) / (1000 * 60));

const second = Math.floor((ms % (1000 * 60)) / 1000);
函数msToHMS(ms){
//1-转换为秒:
var秒=毫秒/1000;
//2-提取时间:
var hours=parseInt(秒/3600);//1小时内3600秒
秒=秒%3600;//提取小时后剩余的秒数
//3-摘录分钟:
var minutes=parseInt(秒/60);//1分钟内60秒
//4-仅保留未提取到分钟的秒数:
秒=秒%60;
//警报(小时+“:”+分钟+“:”+秒);
小时数=(小时数<10)?“0”+小时数:小时数;
分钟=(分钟<10)?“0”+分钟:分钟;
秒=(秒<10)?“0”+秒:秒;
var hms=小时+“:”+分钟+“:”+秒;
返回hms;
}
我们将以毫秒为单位的数字(123456)除以60000,得到以分钟为单位的相同数字,这里是2.0576

toFixed(2)-将数字四舍五入到最接近的两位小数,在本例中给出的答案为2.06

然后使用replace将句点替换为冒号。

我的解决方案: 输入:11381(毫秒) 输出:00:00:11.381

 timeformatter(time) {
    console.log(time);

    let miliSec = String(time%1000);
    time = (time - miliSec)/1000;
    let seconds = String(time%60);
    time = (time - seconds)/60;
    let minutes = String(time%60);
    time = (time-minutes)/60;
    let hours = String(time)

    while(miliSec.length != 3 && miliSec.length<3 && miliSec.length >=0) {
        miliSec = '0'+miliSec;
    }
    while(seconds.length != 2 && seconds.length<3 && seconds.length >=0) {
        seconds = '0'+seconds;
    }
    while(minutes.length != 2 && minutes.length<3 && minutes.length >=0) {
        minutes = '0'+minutes;
    }
    while(hours.length != 2 && hours.length<3 && hours.length >=0) {
        hours = '0'+hours;
    }
    return `${hours}  : ${minutes} : ${seconds}.${miliSec}`
}
timeformatter(时间){
console.log(时间);
设毫秒=字符串(时间%1000);
时间=(时间-毫秒)/1000;
设秒=字符串(时间%60);
时间=(时间-秒)/60;
让分钟数=字符串(时间%60);
时间=(时间分钟)/60;
设小时=字符串(时间)
而(毫秒长度!=3&&毫秒长度=0){
毫秒='0'+毫秒;
}
while(seconds.length!=2&&seconds.length=0){
秒='0'+秒;
}
while(minutes.length!=2&&minutes.length=0){
分钟='0'+分钟;
}
while(hours.length!=2&&hours.length=0){
小时数='0'+小时数;
}
返回`${hours}:${minutes}:${seconds}.${miliSec}`
}

要将毫秒内的任何数字转换为秒,只需将其乘以1000即可求解

或者你可以创建函数来实现这一点,我认为这是正确的方法

//将毫秒转换为秒
函数msToSeconds(数字){
返回编号=编号*1000;
}
记住 单一责任所以不要像这样的职能msToSMHD

你怎么办