Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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 - Fatal编程技术网

如何在javascript中对两个时间值求和

如何在javascript中对两个时间值求和,javascript,Javascript,我一直在尝试实现将两个值相加为小时的函数。 “示例:01:30+00:30=02:00” 下面的函数只有当两个值的和等于一个整数时才起作用,比如上面的例子。但问题是当值为01:45+00:20时,它给出的是33:05,而不是02:05 我试过几种组合,但到目前为止都没有效果 function sumOFHoursWorked(){ var time1 = "00:45"; var time2 = "01:20"; var hour=0; var minute=

我一直在尝试实现将两个值相加为小时的函数。 “示例:01:30+00:30=02:00”

下面的函数只有当两个值的和等于一个整数时才起作用,比如上面的例子。但问题是当值为01:45+00:20时,它给出的是33:05,而不是02:05

我试过几种组合,但到目前为止都没有效果

function sumOFHoursWorked(){
    var time1 = "00:45";
    var time2 = "01:20";


    var hour=0;
    var minute=0;
    var second=0;

    var splitTime1= time1.split(':');
    var splitTime2= time2.split(':');


    hour = parseInt(splitTime1[0])+parseInt(splitTime2[0]);
    minute = parseInt(splitTime1[1])+parseInt(splitTime2[1]);
    hour = hour + minute/60;
    minute = minute%60;
    second = parseInt(splitTime1[2])+parseInt(splitTime2[2]);
    minute = minute + second/60;
    second = second%60;

    var REalhourstime = ('0'  + hour).slice(-2)+':'+('0' + minute).slice(-2);
   alert(REalhourstime);
   document.getElementById('realhorasTB').innerHTML = REalhourstime;

      }

这实际上取决于你的时间,我的意思是它将是在
mm:ss
formet或
hh:mm:ss
hh:mm:ss:msms
中,但只需几秒钟和几分钟,你就可以做这样的事情

函数sumOFHoursWorked(){
var time1=“00:45”。拆分(':');
var time2=“01:20”。拆分(':');
设secondSum=Number(time1[1])+Number(time2[1]);
设minSum=Number(time1[0])+Number(time2[0]);
如果(二次总和>59){
secondSum=数学绝对值(60-secondSum);
minSum+=1;
}
如果(二次总和<10){
secondSum=`0${secondSum}`;
}
如果(分钟<10){
minSum=`0${minSum}`;
}
返回`${minSum}:${secondSum}`;
}

log(sumOFHoursWorked())我会将它转换为分钟,然后减去,然后计算小时和分钟

功能总分钟数(时间){
var parts=time.split(“:”)
返回+部分[0]*60++部分[1]
}
函数timeDiff(time1,time2){
var mins1=总分钟数(时间1)
var mins2=总分钟数(时间2)
变量差异=分钟2-分钟1
变量小时数='0'+(数学下限(差异/60))
变量分钟数='0'+(差异小时数*60)
返回(小时片(-2)+':'+分钟片(-2))
}
console.log(timeDiff(“00:45”、“01:20”))
  • 首先,
    time1
    time2
    字符串缺少末尾的秒数。例如,
    var time1=“00:45:00”
    。否则,您的计算将有一些
    NaN
  • 主要问题是
    hour
    是一个浮点数(~2.083333),因此
    ('0'+hour)
    是'02.083333'

  • 您可以使用类似的方法:
    ('0'+Math.floor(hour))

    您不使用Javascript的内置日期时间函数有什么原因吗?使用Javascript的内置日期对象将使这更为平滑
    let date=new date()
    然后
    date.toLocaleTimeString
    以小时:分钟为单位获取格式。好的,我将添加缺少的秒数。这确实可能是我的问题。这对我来说很有用。我现在就用这个,因为没人给我其他建议。谢谢你,也谢谢所有帮助我的人。