我有一个关于授课时间的开始和结束时间的下拉列表,时间格式为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小时。我该如何实现?
答案 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]
}