You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何按指定时长拆分营业时间生成有效预约时段队列

问题根因

  1. 代码内middleMin固定为10,所有小时的分钟遍历都从10开始,导致9点之后的所有整点0分时段全部缺失
  2. 没有增加休息时段的判断逻辑,会错误生成休息时间段内的可预约时段

修复方案

建议将所有时间统一转换为当日总分钟数进行计算,避免嵌套循环带来的逻辑错位,实现代码如下:

// 定义基础参数
const Startshift = "09:10";
const breaktime = "12:00";
const endBreak = "12:30";
const endShift = "13:00";
const selectedServiceDuration = 10; // 单时段时长 单位分钟
const arr = [];

// 工具函数:HH:MM格式时间转当日总分钟数
const timeToMin = (timeStr) => {
  const [hour, min] = timeStr.split(":").map(Number);
  return hour * 60 + min;
}

// 所有时间点转分钟数简化区间判断
const startMin = timeToMin(Startshift);
const breakStartMin = timeToMin(breaktime);
const breakEndMin = timeToMin(endBreak);
const endMin = timeToMin(endShift);

// 遍历生成时段
for (let currentMin = startMin; currentMin < endMin; currentMin += selectedServiceDuration) {
  // 过滤休息时段
  if (currentMin >= breakStartMin && currentMin < breakEndMin) continue;
  // 转换回HH:MM格式,补全分钟前导0
  const hour = Math.floor(currentMin / 60);
  const min = currentMin % 60;
  arr.push({
    id: Math.random() * 56,
    hour: `${hour}:${min.toString().padStart(2, '0')}`
  })
}

输出结果

执行后输出的hour字段如下:

"9:10",
"9:20",
"9:30",
"9:40",
"9:50",
"10:00",
"10:10",
"10:20",
"10:30",
"10:40",
"10:50",
"11:00",
"11:10",
"11:20",
"11:30",
"11:40",
"11:50",
"12:30",
"12:40",
"12:50"

内容的提问来源于stack exchange,提问作者Ashraf Hijazy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:06:07