一饮是江湖 2023-02-23 22:07 采纳率: 88.9%
浏览 21
已结题

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分钟

  • 写回答

1条回答 默认 最新

  • grantthing 2023-02-23 22:17
    关注

    可以使用以下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。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 修改了问题 2月23日
  • 创建了问题 2月23日

悬赏问题

  • ¥15 vue3+element-plus页面崩溃
  • ¥15 像这种代码要怎么跑起来?
  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理