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

FullCalendar JS如何设置10:00至次日00:00的营业时间及选择约束

问题核心原因

FullCalendar默认将endTime: "00:00:00"判定为当日零点,早于startTime: "10:00:00",导致时间区间无效全时段禁用;设置endTime: "23:59:59"时,结束时间为次日零点的时段(如23:00-00:00)会被判定为超出范围,因此无法选择。同时当前版本不支持仅配置startTime无endTime的约束规则。

解决方案1:用24:00标识结束时间(最简便)

直接将结束时间设置为24:00:00而非00:00:00,FullCalendar会识别为当日结束时间,不会判定为早于开始时间,可完美覆盖10:00到次日零点的时段:

// 传入businessHours、eventConstraint、selectConstraint的配置统一改为
{
  startTime: "10:00:00",
  endTime: "24:00:00"
}

该方案可同时保留营业时间的灰色遮罩显示效果,无需额外逻辑。

解决方案2:自定义校验规则实现禁用指定时段

如果需要更灵活的控制(直接禁用00:00-10:00的时段而非设置允许范围),可以使用selectAllow和eventAllow自定义校验逻辑,优先级高于内置的约束规则:

// 日历配置中添加如下参数
selectAllow: function(selectInfo) {
  // 仅允许开始时间小时数≥10的时段被选择
  return selectInfo.start.getHours() >= 10;
},
eventAllow: function(dropInfo) {
  // 仅允许事件被拖拽到开始时间小时数≥10的时段
  return dropInfo.start.getHours() >= 10;
}

如果需要兼容跨天选择的场景,可以自行扩展判断逻辑,比如允许开始时间在当日10点后、结束时间在次日任意时间的选择操作。

内容的提问来源于stack exchange,提问作者Anthony Amar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:45:00