我正在尝试自动计算时差,如果时差是在同一天的例子中,一切正常
开始结束时间
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);
}
});
});
代码已编辑,现在可以使用。
答案 0 :(得分:1)
您已经知道该解决方案,因为您将其用于分钟:
if(min < 0){
min += 60;
hour_carry += 1;
}
你必须做几个小时的同样事情:
if (hour < 0) {
hour += 24;
}