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

使用JavaScript判断两个日期是否处于同一周的实现方法

JavaScript判断两个日期是否属于同一周实现方案

实现逻辑

  • 周起始规则匹配示例要求:以周一作为每周的第一天
  • 首先消除日期的时分秒部分干扰,统一转换为对应日期的零点时间
  • 计算每个日期所属当周周一的零点时间戳,若两个时间戳相等则属于同一周

完整代码

/**
 * 判断两个日期是否属于同一周
 * @param {string} dateStr1 日期1 格式为YYYY-MM-DD
 * @param {string} dateStr2 日期2 格式为YYYY-MM-DD
 * @returns {boolean} 是否属于同一周
 */
function isSameWeek(dateStr1, dateStr2) {
  // 辅助函数:获取指定日期当周周一的零点时间戳
  const getMondayTimestamp = (dateStr) => {
    const date = new Date(dateStr);
    // 校验日期合法性
    if (isNaN(date.getTime())) {
      throw new Error('无效的日期格式,请使用YYYY-MM-DD格式');
    }
    // 清除时分秒毫秒,避免时间部分干扰
    date.setHours(0, 0, 0, 0);
    // getDay()返回值:0为周日,1为周一,...,6为周六
    const dayOfWeek = date.getDay();
    // 计算当前日期距离当周周一的天数差
    const diff = date.getDate() - (dayOfWeek === 0 ? 6 : dayOfWeek - 1);
    // 切换到当周周一的日期
    date.setDate(diff);
    return date.getTime();
  };

  try {
    return getMondayTimestamp(dateStr1) === getMondayTimestamp(dateStr2);
  } catch (e) {
    console.error(e.message);
    return false;
  }
}

// 调用测试
console.log(isSameWeek('2021-09-20', '2021-09-24') ? 'Present in same week' : 'Not in same week');
// 输出:Present in same week
console.log(isSameWeek('2021-09-24', '2021-09-27') ? 'Present in same week' : 'Not in same week');
// 输出:Not in same week

规则调整说明

如果需要将周起始日改为周日,只需要修改getMondayTimestamp函数中的天数差计算逻辑即可:

// 周日为周起始的天数差计算
const diff = date.getDate() - dayOfWeek;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:06:02