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

如何修改呼叫中心JS营业时间校验代码使其支持节假日判断?

修改方案

实现逻辑

要适配节假日判断,只需提前维护所在地区的法定节假日列表,在原有工作时段判断逻辑前新增节假日校验规则:只要当前日期属于节假日,直接判定为非工作时段。如果存在周末补班的场景,也可以额外增加补班日期列表做反向适配。

修改后完整代码

exports.handler = async function(context, event, callback) {
  const moment = require('moment-timezone');
  var now = moment().tz('America/New_York');
  console.log('Current time-->'+now);
  console.log('current hours-->'+now.hour());
  
  let isWorkingHours = false;
  //let isWorkingHours = true; // 测试用开关

  // 配置美国纽约地区法定节假日,格式为YYYY-MM-DD,每年按需更新即可
  const holidays = [
    '2024-01-01', // 新年
    '2024-01-15', // 马丁路德金日
    '2024-02-19', // 总统日
    '2024-05-27', // 阵亡将士纪念日
    '2024-07-04', // 独立日
    '2024-09-02', // 劳动节
    '2024-10-14', // 哥伦布日
    '2024-11-11', // 退伍军人节
    '2024-11-28', // 感恩节
    '2024-12-25'  // 圣诞节
  ];
  // 可选:配置补班工作日(原本是周末但需要上班的日期)
  const extraWorkDays = [
    // 示例:'2024-12-26'
  ];

  const todayStr = now.format('YYYY-MM-DD');
  const weekday = now.isoWeekday(); 
  console.log('weekday-->'+weekday);
  
  // 判断逻辑:不是节假日 + (是工作日 或 是补班日)+ 9点到17点之间
  if (
    !holidays.includes(todayStr)
    && (weekday <= 5 || extraWorkDays.includes(todayStr))
    && now.hour() >= 9 
    && now.hour() <= 17
  ) {
  //if (now.hour() >= 4 && now.hour() <= 20 && weekday <= 2) { // 测试用规则
      isWorkingHours = true;
    }
    callback(null, {
    isWorkingHours: isWorkingHours
    });
}

改动说明

  • 新增了节假日配置数组,你可以根据运营地区的官方放假安排每年更新数组内的日期即可,无需修改核心判断逻辑
  • 新增了节假日校验规则,只要当前日期属于配置的节假日列表,就算是周一到周五的工作时段也会判定为非工作时间
  • 额外增加了补班日适配逻辑,遇到需要周末上班的特殊场景,只需要把对应日期加入extraWorkDays数组即可生效

内容的提问来源于stack exchange,提问作者César Castor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:09:04