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

如何按时间段禁用Bootstrap Datepicker中的指定星期几?

按时间段禁用Bootstrap Datepicker指定星期几的实现方案

要实现不同时间段禁用不同星期几的需求,核心是利用Bootstrap Datepicker的isInvalidDate回调函数,结合自定义的时间段规则来判断日期是否禁用。

问题排查:你的isInvalidDate为什么没生效?

你之前的代码里用了date.day() === 0 || date.day() === 6,这里的day()是jQuery Date对象的设置方法(用来修改星期几),而非获取方法,导致返回的是Date对象而非布尔值,所以永远不会触发禁用。正确获取星期几的方法是原生的date.getDay()(返回0-6,0代表周日,1代表周一,以此类推)。

完整实现代码

  1. 首先定义时间段禁用规则,每个规则包含开始日期、结束日期和要禁用的星期几列表:
// 定义时间段禁用规则:月份为0-based(12月对应11)
const disableRules = [
  {
    start: new Date(2024, 11, 31), // 2024年12月31日
    end: new Date(2025, 11, 30),   // 2025年12月30日
    disabledDays: [1]              // 禁用周一(1代表周一)
  },
  {
    start: new Date(2025, 11, 31), // 2025年12月31日
    end: new Date(2026, 11, 30),   // 2026年12月30日
    disabledDays: [0, 6]           // 禁用周日(0)和周六(6)
  }
];
  1. 修改Datepicker配置,使用isInvalidDate替代全局的daysOfWeekDisabled:
$('#date_return').datepicker({
    language: "es",
    format: 'dd/mm/yyyy',
    autoclose: true,
    todayHighlight: true,
    showMeridian: false,
    startView: 2,
    minView: 2,
    maxView: 1,
    pickerPosition: "bottom-left",
    isInvalidDate: function(date) {
        // 遍历所有禁用规则
        for (const rule of disableRules) {
            // 转换为时间戳避免时区问题,判断当前日期是否在规则时间段内
            const dateTime = date.getTime();
            const startTime = rule.start.getTime();
            const endTime = rule.end.getTime();
            
            if (dateTime >= startTime && dateTime <= endTime) {
                const dayOfWeek = date.getDay();
                // 如果当前星期几在禁用列表中,标记为无效日期
                if (rule.disabledDays.includes(dayOfWeek)) {
                    return true;
                }
            }
        }
        // 不匹配任何禁用规则,允许选择
        return false;
    }
});

额外注意事项

  • 日期比较时使用时间戳(getTime())可以避免时区差异导致的判断错误。
  • 如果需要保留全局禁用的星期几,可以在回调末尾添加额外判断,例如:return ruleMatch || [0,6].includes(date.getDay())。
  • 测试时请重点验证时间段的边界日期(如规则的开始/结束当天)是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:45:56