首页 > web前端 > css教程 > 正文

如何计算预定时间段内已安排时间段的长度?

花韻仙語
发布: 2025-02-21 15:43:21
原创
1125人浏览过

如何计算预定时间段内已安排时间段的长度?

算法:计算预定时间段内已安排时间段的总时长

给定两个数组 paiban (预定时间段) 和 paiban2 (已安排时间段),目标是计算 paiban2 中,落在 paiban 各个时间段内的已安排时间段的总时长。

改进的解决方案:

美间AI
美间AI

美间AI:让设计更简单

美间AI 45
查看详情 美间AI

之前的方案只计算了满足条件的已安排时间段的数量,而非时长。 我们需要修改算法来计算时长。 假设时间以分钟为单位。

<code class="javascript">function calculateScheduledTime(paiban, paiban2) {
  const results = paiban.map(item => {
    let totalTime = 0;
    const filtered = paiban2.filter(({ starttime, endtime }) => {
      // 转换为分钟数方便计算
      const itemStartMinutes = timeToMinutes(item.starttime);
      const itemEndMinutes = timeToMinutes(item.endtime);
      const startMinutes = timeToMinutes(starttime);
      const endMinutes = timeToMinutes(endtime);

      // 检查已安排时间段是否完全在预定时间段内
      return itemStartMinutes <= startMinutes && itemEndMinutes >= endMinutes;
    });

    filtered.forEach(({ starttime, endtime }) => {
      totalTime += timeToMinutes(endtime) - timeToMinutes(starttime);
    });
    return totalTime;
  });
  return results;
}

function timeToMinutes(time) {
  const [hours, minutes] = time.split(':').map(Number);
  return hours * 60 + minutes;
}


const paiban = [
  { id: 1, starttime: '08:00', mouth: 10, endtime: '09:00', checked: false },
  { id: 2, starttime: '09:00', mouth: 10, endtime: '10:00', checked: false },
  { id: 3, starttime: '10:00', mouth: 10, endtime: '11:00', checked: false },
];

const paiban2 = [
  { id: 1, starttime: '08:00', endtime: '08:10' },
  { id: 2, starttime: '08:10', endtime: '08:20' },
  { id: 3, starttime: '08:30', endtime: '08:50' },
  { id: 4, starttime: '09:00', endtime: '09:10' },
  { id: 5, starttime: '09:10', endtime: '09:20' },
  { id: 6, starttime: '10:00', endtime: '10:10' },
  { id: 7, starttime: '10:10', endtime: '10:20' },
  { id: 8, starttime: '10:20', endtime: '10:40' },
];

console.log(calculateScheduledTime(paiban, paiban2)); // [30, 20, 40]  (in minutes)</code>
登录后复制

这个改进后的代码首先定义了一个 timeToMinutes 函数将时间字符串转换为分钟数,然后在 calculateScheduledTime 函数中计算每个预定时间段内已安排时间段的总时长(以分钟为单位)。 输出结果更直观地反映了已安排时间的实际时长。 注意,这个算法假设已安排的时间段不会超过预定时间段。 如果需要处理这种情况,需要添加额外的逻辑。

以上就是如何计算预定时间段内已安排时间段的长度?的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号