首页 > 解决方案 > 如何计算javascript中时间输入之间的差异?

问题描述

我想计算我的工作时间。当我输入时它工作正常

08:00 - 09:00 = 01:00

但是当我输入这个时间

23:30 - 01:30 = 10:00 

它应该返回02:00

function pad(num) {
  return ("0" + num).slice(-2);
}

function diffTime(start, end) {
  var s = start.split(":"),
    sMin = +s[1] + s[0] * 60,
    e = end.split(":"),
    eMin = +e[1] + e[0] * 60,
    diff = eMin - sMin;
    
  if (diff < 0) {
    sMin -= 12 * 60;
    diff = eMin - sMin
  }
  var h = Math.floor(diff / 60),
    m = diff % 60;
  return "" + pad(h) + ":" + pad(m);
}

document.getElementById('button').onclick = function() {
  document.getElementById('delay').value = diffTime(
    document.getElementById('timeOfCall').value,
    document.getElementById('timeOfResponse').value
  );
}
<input type="time" id="timeOfCall">
<input type="time" id="timeOfResponse">
<button type="button" id="button">CLICK</button>
<input type="time" id="delay">

标签: javascript

解决方案


这是查看满足所有测试用例的问题的另一种更简单的方法,如果有任何用例失败,请尝试所有测试用例,然后告诉我我会修复它。

您只需先计算小时数,然后检查是上午还是下午,然后简单地计算分钟数。

function diffTime(start, end) {
			var s = start.split(":");
			var e = end.split(":");
			var dHour;
			var dMinute ;
			var startHour = parseInt(s[0]);
			var endHour = parseInt(e[0]); 
			var startMinute = parseInt(s[1]);
			var endMinute = parseInt(e[1]);
			
			// For counting difference of hours

			if((startHour>12 && endHour>12) || (startHour<12 && endHour<12))
			{
				
				if(startHour<endHour)
				{
					dHour = endHour - startHour;
				}
				else if(startHour>endHour)
				{
					dHour = 24 - ( startHour - endHour);
				}
				else
				{
					dHour = 24;					
				}
			}
			else if(startHour>12 && endHour<=12)
			{
				dHour = (24 - startHour) + endHour;
			}
			else if(startHour<=12 && endHour > 12)
			{
				dHour = endHour - startHour;
			}
			else 
			{
				dHour = 24
			}


			// For Counting Difference of Minute

			if (startMinute>endMinute) 
			{
				dMinute = 60 - (startMinute - endMinute);
				dHour = dHour - 1;
			}
			else if(startMinute<endMinute)
			{
				dMinute = endMinute - startMinute;
			}
			else
			{
				dMinute = 0
			}

			return dHour + " Hours " + dMinute + " Minutes";
		}

		document.getElementById('button').onclick = function() {
			document.getElementById('delay').value = diffTime(
				document.getElementById('timeOfCall').value,
				document.getElementById('timeOfResponse').value);
}
<input type="time" id="timeOfCall">
<input type="time" id="timeOfResponse">
<button type="button" id="button">CLICK</button>
<input type="text" id="delay">


推荐阅读