首页 > 解决方案 > 如何在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=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;

      }

标签: javascript

解决方案


我会将其转换为分钟并减去,然后计算小时和分钟。

function totalMinutes (time) {
  var parts = time.split(":")
  return +parts[0] * 60 + +parts[1] 
}

function timeDiff (time1, time2) {
  var mins1 = totalMinutes(time1)
  var mins2 = totalMinutes(time2)
  var diff = mins2 - mins1
  var hours = '0' + (Math.floor(diff/60))
  var minutes = '0' + (diff - hours * 60)
  return (hours.slice(-2) + ':' + minutes.slice(-2))
}

console.log(timeDiff("00:45", "01:20"))

它会在超过午夜的时候失败,一个简单的小于检查可以解决这个问题。

function totalMinutes (time) {
  var parts = time.split(":")
  return +parts[0] * 60 + +parts[1] 
}
function timeDiff (time1, time2) {
  var mins1 = totalMinutes(time1)
  var mins2 = totalMinutes(time2)

  if (mins2 < mins1) {
    mins2 += 1440
  }
  var diff = mins2 - mins1
  var hours = '0' + (Math.floor(diff/60))
  var minutes = '0' + (diff - hours * 60)
  return (hours.slice(-2) + ':' + minutes.slice(-2))
}

console.log(timeDiff("23:45", "00:45"))


推荐阅读