首页 > 解决方案 > 使用 JavaScript 以 24 小时格式获取两次之间的差异

问题描述

我有一个包含补习班开始和结束时间的下拉列表。时间格式为 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 小时。我怎样才能做到这一点?

标签: javascripttime

解决方案


第一个解决方案:将您的小时转换为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]

}

推荐阅读