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;
}
}
附件详情
-
说明:
普通用户每次点击下载扣除1金币
-
附件名:
-
附件分类:
暂无
-
账户经验:
-
账户金币:
-
账户灵石:
-
上传信息:
雪乃|2026-04-24
-
下载地址: