Javascript以十进制格式自动计算超过00:00(午夜)的时间

时间:2016-05-30 11:42:00

标签: javascript

我正在尝试自动计算时差,如果时差是在同一天的例子中,一切正常

开始结束时间

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 个答案:

答案 0 :(得分:1)

您已经知道该解决方案,因为您将其用于分钟:

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

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

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