js代码判断两个时间段重合多长时间

比如
(1)21:01 - 04:03和22:00 - 06:00重叠363分钟
(2)21:01 - 22:10和22:00 - 06:00重叠10分钟
(3)21:01 - 22:10和08:00 - 09:00重叠0分钟

可以使用以下JavaScript代码来判断两个时间段的重合时间:

function getOverlapInMinutes(start1, end1, start2, end2) {
  // 将时间字符串转换为Date对象
  const start1Date = new Date(`1970/01/01 ${start1}:00`);
  const end1Date = new Date(`1970/01/01 ${end1}:00`);
  const start2Date = new Date(`1970/01/01 ${start2}:00`);
  const end2Date = new Date(`1970/01/01 ${end2}:00`);

  // 找出两个时间段的交集
  const overlapStart = start1Date > start2Date ? start1Date : start2Date;
  const overlapEnd = end1Date < end2Date ? end1Date : end2Date;

  // 计算交集的时长
  const overlapInMs = overlapEnd - overlapStart;
  const overlapInMinutes = Math.round(overlapInMs / 60000);

  // 如果有交集,则返回交集时长,否则返回0
  return overlapInMinutes > 0 ? overlapInMinutes : 0;
}

// 示例用法
console.log(getOverlapInMinutes("21:01", "04:03", "22:00", "06:00")); // 363
console.log(getOverlapInMinutes("21:01", "22:10", "22:00", "06:00")); // 10
console.log(getOverlapInMinutes("21:01", "22:10", "08:00", "09:00")); // 0


这个函数接收四个时间字符串参数,分别是两个时间段的起始时间和结束时间。首先,将这些字符串转换为Date对象,并找出两个时间段的交集的起始时间和结束时间。然后,计算交集的时长,并将其转换为分钟数返回。如果交集时长小于等于0,则返回0。