使用JavaScript以二十四小时格式获得两次之间的差异

时间:2019-06-03 03:18:58

标签: javascript time

我有一个关于授课时间的开始和结束时间的下拉列表,时间格式为24小时。 例如-

08:30 - 12:00
21:00 - 00:00
05:00 - 10:00

我需要获取开始时间和结束时间之间的时差(以小时为单位)。我使用了以下代码。

var diff = parseFloat(endTime) - parseFloat(startTime);

因此,如果我选择时间21:00-00:00,则输出为-21。但是实际值应为3小时。此外,如果有人选择时间为21:00-00:00,则时差应为3小时,而如果有人选择21:00-12:00,则时差应为15小时。我该如何实现?

1 个答案:

答案 0 :(得分:2)

第一个解决方案: DateTime 格式转换小时并使用

function diff_hours(dt2, dt1) 
 {

  var diff =(dt2.getTime() - dt1.getTime()) / 1000;
  diff /= (60 * 60);
  return Math.abs(Math.round(diff));

 }

这将为您提供小时数的差异。

第二个解决方案:自定义功能,如果您确实只想使用字符串。

function diffTime(time1,time2) {
    var hour1 = time1.split(':')[0];
    var hour2 = time2.split(':')[0];
    var min1 = time1.split(':')[1];
    var min2 = time2.split(':')[1];

    var diff_hour = hour2 - hour1;
    var diff_min = min2 - min1;
    if (diff_hour<0) {
        diff_hour+= 24;
    }
    if (diff_min<0) {
        diff_min+=60;
        diff_hour--;
    } else if(diff_min>=60){
        diff_min-=60;
        diff_hour++;
    }
    return [diff_hour,diff_min]

}