js怎么计算两个时间相差的小时数(时分秒)

方法一:

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;
 
}

你可能感兴趣的:(javascript)