方法一:
function getHour(s1, s2) {
var reDate = /\d{4}-\d{1,2}-\d{1,2} /;
s1 = new Date((reDate.test(s1) ? s1 : '2018-1-1 ' + s1).replace(/-/g, '/'));
s2 = new Date((reDate.test(s2) ? s2 : '2018-1-1 ' + s2).replace(/-/g, '/'));
var ms = s2.getTime() - s1.getTime();
if (ms < 0) return 0;
return Math.floor(ms / 1000 / 60 / 60); //小时
}
//自己注意传递要么都带日期,要么都不带,否则计算出来的不对
alert(getHour('2017-8-23 12:05:05', '2017-8-25 10:05:05'))
alert(getHour('12:05:05', '10:05:05'))
alert(getHour('10:05:05', '12:05:05'))
方法二:
/**
* JS 计算两个时间间隔多久(时分秒)
* @param startTime "2019-10-23 15:27:23"
* @param endTime "2019-10-23 15:27:55"
* @return 1天2时3分5秒
*/
function twoTimeInterval(startTime, endTime) {
// 开始时间
let d1 = startTime.replace(/\-/g, "/");
let date1 = new Date(d1);
// 结束时间
let d2 = endTime.replace(/\-/g, "/");
let date2 = new Date(d2);
// 时间相差秒数
let dateDiff = date2.getTime() - date1.getTime();
// 计算出相差天数
let days = Math.floor(dateDiff / (24 * 3600 * 1000));
// 计算出小时数
let residue1 = dateDiff % (24 * 3600 * 1000); // 计算天数后剩余的毫秒数
let hours = Math.floor(residue1 / (3600 * 1000));
// 计算相差分钟数
let residue2 = residue1 % (3600 * 1000); // 计算小时数后剩余的毫秒数
let minutes = Math.floor(residue2 / (60 * 1000));
// 计算相差秒数
let residue3 = residue2 % (60 * 1000); // 计算分钟数后剩余的毫秒数
let seconds = Math.round(residue3 / 1000);
let returnVal =
((days == 0) ? "" : days+"天") +
((hours == 0) ? "" : hours +"时") +
((minutes == 0) ? "" : minutes+"分") +
((seconds == 0) ? "" : seconds+"秒");
return returnVal;
}