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

如何判断dd/mm/yyyy格式的当前日期是否在指定起止日期范围内

问题根源

原代码逻辑失效是因为JavaScript内置的Date.parse()方法默认不支持dd/mm/yyyy格式的日期解析:对于斜杠分隔的日期字符串,JS默认按照mm/dd/yyyy(月/日/年)的规则解析,传入日在前的字符串时会出现解析值错位、生成错误时间戳甚至返回Invalid Date的问题,最终导致范围判断结果不符合预期。

修复方案

不要直接用Date.parse处理非标准格式的日期字符串,先手动拆解dd/mm/yyyy字符串的日、月、年字段,再生成合法的Date对象做时间戳比对即可。注意JS中Date构造函数的月份参数从0开始计数(0对应1月,11对应12月),解析到的月份数值需要减1再传入。

正确实现代码如下:

function dateCheck(from, to, currentdate) {
    // 解析dd/mm/yyyy格式字符串为时间戳
    const parseDate = (dateStr) => {
        const [day, month, year] = dateStr.split('/').map(item => parseInt(item, 10));
        return new Date(year, month - 1, day).getTime();
    };

    const startTs = parseDate(from);
    const endTs = parseDate(to);
    const checkTs = parseDate(currentdate);

    return checkTs >= startTs && checkTs <= endTs;
}
注意事项
  • 该实现要求传入的三个日期参数严格遵循dd/mm/yyyy格式,否则会出现解析错误
  • 上述代码默认比对的是日期零点的时间戳,如果需要带时分秒比对,可以扩展parseDate方法接收时分秒参数
  • 所有JS环境对非标准日期字符串的解析逻辑没有统一规范,直接用Date.parse处理自定义格式日期大概率出现跨环境兼容问题,不建议使用

测试示例:传入from为01/10/2024(2024年10月1日)、to为31/10/2024(2024年10月31日),校验15/10/2024时返回true,校验01/09/2024时返回false,不会出现原代码将月份、日期解析错位的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:57:19