繁体   English   中英

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

[英]How to calculate the hours between two times with jquery?

我正在尝试计算两次之间的小时数。

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

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" />

查询

 $(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();
 });

http://jsfiddle.net/44NCk/

简单的方法是如果你得到一个负值,加上 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;

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

正如您在thsi fiddle中看到的那样,将分钟作为小数点需要更多: 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);
 }
function timeobject(t){
  a = t.replace('AM','').replace('PM','').split(':');
  h = parseInt(a[0]);
  m = parseInt(a[1]);
  ampm = (t.indexOf('AM') !== -1 ) ? 'AM' : 'PM';
  return {hour:h,minute:m,ampm:ampm};
}

function timediff(s,e){
  s = timeobject(s);
  e = timeobject(e);
  e.hour = (e.ampm === 'PM' &&  s.ampm !== 'PM' && e.hour < 12) ? e.hour + 12 : e.hour;
  hourDiff = Math.abs(e.hour-s.hour);
  minuteDiff = e.minute - s.minute;

  if(minuteDiff < 0){
    minuteDiff = Math.abs(60 + minuteDiff);
    hourDiff = hourDiff - 1;
  }

  return hourDiff+':'+ Math.abs(minuteDiff);
}

difference = timediff('09:10 AM','12:25 PM');  // output 3:15
difference = timediff('09:05AM','10:20PM');  // output 13:15
 $(function () {
     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),
             seconds1 = parseInt(time1[2], 10),
             seconds2 = parseInt(time2[2], 10);
         var hours = hours2 - hours1, mins = 0, seconds = 0;
         if(hours < 0) hours = 24 + hours;
         if(mins2 >= mins1) {
             mins = mins2 - mins1;
         }
         else {
             mins = (mins2 + 60) - mins1;
             hours--;
         }

         if (seconds2 >= seconds1) {
                seconds = seconds2 - seconds1;
         }
         else {
                seconds = (seconds2 + 60) - seconds1;
            mins--;
         }

         seconds = seconds/60;
         mins += seconds;

         mins = mins / 60; // take percentage in 60
         hours += mins;
         //hours = hours.toFixed(4);
         $(".Hours").val(hours);
     }
     $(".Time1,.Time2").change(calculate);
     calculate();
 });

这是一个 HTML 代码

 <input type="text" name="start_time" id="start_time" value="12:00">
 <input type="text" name="end_time" id="end_time" value="10:00">
 <input type="text" name="time_duration" id="time_duration">

这是javascript代码

function timeCalculating()
  {
    var time1 = $("#start_time").val();
    var time2 = $("#end_time").val();
    var time1 = time1.split(':');
    var time2 = time2.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;
    if(hours < 0) hours = 24 + hours;
    if(mins2 >= mins1) {
        mins = mins2 - mins1;
    }
    else {
      mins = (mins2 + 60) - mins1;
      hours--;
    }
    if(mins < 9)
    {
      mins = '0'+mins;
    }
    if(hours < 9)
    {
      hours = '0'+hours;
    }
    $("#time_duration").val(hours+':'+mins);
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM