如何使用jquery计算两次之间的小时数?

Dre*_*TeK 3 html javascript time jquery input

我想计算两次之间的小时数.

下面是我目前的位置,但此代码以两种方式失败.

1).我需要.Hours以十进制输出时间.

(例如,一个半小时应该输出1.5和15分钟应该是0.25).

2).计算当前不会将时间值视为time.

(例如23:00到2:00应该相等3不是 -21当前).


HTML

<input class="Time1" value="10:00" />
<input class="Time2" value="12:00" />
<input class="Hours" value="0" />
Run Code Online (Sandbox Code Playgroud)

JQUERY

 $(function () {
     function calculate() {
         var hours = parseInt($(".Time2").val().split(':')[0], 10) - parseInt($(".Time1").val().split(':')[0], 10);
         $(".Hours").val(hours);
     }
     $(".Time1,.Time2").change(calculate);
     calculate();
 });
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/44NCk/

tec*_*bar 9

简单的方法是,如果你得到一个负值,添加24小时,你应该得到你的结果.

var hours = parseInt($(".Time2").val().split(':')[0], 10) - parseInt($(".Time1").val().split(':')[0], 10);

// if negative result, add 24 hours
if(hours < 0) hours = 24 + hours;
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/44NCk/1/

将分钟作为小数点进一步涉及更多,你可以在这个小提琴中看到:http://jsfiddle.net/44NCk/2/

function calculate() {
     var time1 = $(".Time1").val().split(':'), time2 = $(".Time2").val().split(':');
     var hours1 = parseInt(time1[0], 10), 
         hours2 = parseInt(time2[0], 10),
         mins1 = parseInt(time1[1], 10),
         mins2 = parseInt(time2[1], 10);
     var hours = hours2 - hours1, mins = 0;

     // get hours
     if(hours < 0) hours = 24 + hours;

     // get minutes
     if(mins2 >= mins1) {
         mins = mins2 - mins1;
     }
     else {
         mins = (mins2 + 60) - mins1;
         hours--;
     }

     // convert to fraction of 60
     mins = mins / 60; 

     hours += mins;
     hours = hours.toFixed(2);
     $(".Hours").val(hours);
 }
Run Code Online (Sandbox Code Playgroud)