2016-05-30 65 views
-2

(午夜)我试图自动计算时间差,如果时间差是在同一天例子的Javascript自动计算时间过去00十进制格式

开始它所有的工作原理确定结束时间

08:00 12:00 4.0

问题: 22:00 01:00

给出了结果-21.0小时,这是不可接受的 应该3.0小时

的源代码:FIDDLE LINK

<div class="container"> 
<table id="t1" class="table table-hover"> 
     <tr> 
      <th class="text-center">Start Time</th> 
      <th class="text-center">End Time</th> 
      <th class="text-center">Stunden</th> 
     </tr> 
     <tr id="row1" class="item"> 
      <td><input name="starts[]" class="starts form-control" ></td> 
      <td><input name="ends[]" class="ends form-control" ></td> 
      <td><input name="stunden[]" class="stunden form-control" readonly="readonly" ></td> 
     </tr> 
      <tr id="row2" class="item"> 
      <td><input name="starts[]" class="starts form-control" value="22:00"></td> 
      <td><input name="ends[]" class="ends form-control" value="01:00"></td> 
      <td><input name="stunden[]" class="stunden form-control" readonly="readonly" ></td> 
     </tr> 
    </table> 
</div> 

JS

$(document).ready(function(){ 
    $('.item').keyup(function(){ 

      var starts = $(this).find(".starts").val(); 
      var ends = $(this).find(".ends").val(); 
         var stunden = NaN; 
      s = starts.split(':'); 
      e = ends.split(':'); 

      min = e[1]-s[1]; 
      hour_carry = 0; 
      if(min < 0){ 
       min += 60; 
       hour_carry += 1; 
      } 
      hour = e[0]-s[0]-hour_carry; 
      min = ((min/60)*100).toString() 

      if (hour < 0) { 
         hour += 24; 
      } 

      stunden = hour + "." + min.substring(0,2); 



     if (!isNaN(e[1])){ // && (hour > 0) && (hour < 24) 
      $(this).find(".stunden").val(stunden); 
        } 
    });  
}); 

代码编辑,现在它的工作原理。

回答

1

你已经知道的解决方案,因为你使用它的分钟:

if(min < 0){ 
    min += 60; 
    hour_carry += 1; 
} 

你要做几个小时同样的事情:

if (hour < 0) { 
    hour += 24; 
} 
+0

哦,什么是思念....谢谢......当你超速时发生这种情况 – lewis4u

+0

如果第二个日期溢出到下一个月/年,此方法是否可行? – marekful

+1

@marekful在这里没有日期。只有几小时和几分钟。 – JJJ