百变鹏仔-专注前端行业精选
当前位置:网站首页 > 最近更新 > 前端开发 > JavaScript > 正文

js判断某个日期是否存在开始日期至结束日期范围之内

作者:鹏仔先生 日期:2026-01-26 11:58:25 浏览:226 分类:JavaScript

js判断某个日期是否存在开始日期至结束日期范围之内!

传入三个值,第一个为 开始日期,第二个为 结束日期,第三个为 需要判断的日期。

如果第三个不传,则获取当天的日期用来判断。


/**
     * 判断指定日期(或今天)是否在开始/结束日期范围内(包含起止当天)
     * @param {string} startDateStr - 开始日期(格式:YYYY-MM-DD)
     * @param {string} endDateStr - 结束日期(格式:YYYY-MM-DD)
     * @param {string|null|undefined} targetDateStr - 自定义目标日期(可选,格式:YYYY-MM-DD),不传则判断今天
     * @returns {boolean} 目标日期在范围内返回true,否则返回false
     */
    isDateInRange(startDateStr, endDateStr, targetDateStr) {
      try {
        // 步骤1:确定目标日期(有自定义则用自定义,无则用今天)
        let targetDate;
        if (targetDateStr) {
          // 解析自定义目标日期
          targetDate = new Date(targetDateStr);
        } else {
          // 无自定义日期 → 用今天(仅保留年月日,清空时分秒)
          const today = new Date();
          targetDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());
        }

        // 步骤2:解析开始/结束日期(仅保留年月日,避免时分秒干扰)
        const startDate = new Date(startDateStr);
        const endDate = new Date(endDateStr);
        // 纯日期对象(清空时分秒)
        const pureStartDate = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());
        const pureEndDate = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());
        const pureTargetDate = new Date(targetDate.getFullYear(), targetDate.getMonth(), targetDate.getDate());

        // 步骤3:校验所有日期合法性
        const isStartValid = !isNaN(pureStartDate.getTime());
        const isEndValid = !isNaN(pureEndDate.getTime());
        const isTargetValid = !isNaN(pureTargetDate.getTime());
        if (!isStartValid || !isEndValid || !isTargetValid) {
          console.error('日期格式错误,请传入 YYYY-MM-DD 格式的有效日期');
          return false;
        }

        // 步骤4:核心判断:目标日期 >= 开始日期 且 <= 结束日期
        return pureTargetDate >= pureStartDate && pureTargetDate <= pureEndDate;
      } catch (e) {
        console.error('日期范围判断出错:', e);
        return false;
      }
    }



手机扫码访问

取消回复欢迎 发表评论:

关灯