使用JavaScript以24小时格式获取两次之间的差异

使用JavaScript以24小时格式获取两次之间的差异,javascript,time,Javascript,Time,我有一个关于学费课程开始和结束时间的下拉列表。时间格式为24小时。 乙二醇- 我需要得到以小时为单位的开始和结束时间之差。我使用了下面的代码 var diff = parseFloat(endTime) - parseFloat(startTime); 因此,如果我选择时间21:00-00:00,则输出为-21。但实际值应为3小时。此外,如果有人选择时间为21:00-00:00,差异应为3小时,而如果有人选择时间为21:00-12:00,差异应为15小时。如何实现这一点?第一个解决方案:将您的

我有一个关于学费课程开始和结束时间的下拉列表。时间格式为24小时。 乙二醇-

我需要得到以小时为单位的开始和结束时间之差。我使用了下面的代码

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

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

第一个解决方案:将您的小时转换为日期时间格式并使用

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]

}
函数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=小时2-小时1;
var diff_min=min2-min1;

如果(diff_hour)可能重复的问题虽然是同一个问题,但给出的答案不能为某些场景提供正确答案要将我的时间转换为日期时间格式,我需要一个日期,对吗?当然可以,或者您可以使用
var currentDate=new Date()
如果你不关心一天的话,可以改变一小时后的时间。但是你的问题是你需要澄清什么是“0:00”意思是说。一天的开始?一天的结束?00:00将是一天的开始,所以如果你只想要正的差异,似乎第二个解决方案可以完成这项工作,但如果我选择21:00-00:00,它不会给出正确的答案。它提供21:00,但实际值应该是3h
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]

}