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

设置开始日期最小值为结束日期减90天的JS代码不生效,求解决

问题排查与修复方案

原代码存在的问题

  • 日期运算逻辑错误:JS Date对象直接做减法得到的是毫秒级时间戳,end-90仅代表结束日期往前90毫秒,完全不符合90天的需求;且直接通过时间戳加减计算日期容易出现跨月、闰年计算偏差,更稳妥的方式是用Date内置的setDate方法处理。
  • 仅在页面初始化时执行一次逻辑:如果用户后续修改结束日期的选中值,开始日期的可选最小值不会同步更新。
  • 缺少空值判断:如果页面初始化时结束日期还没有选中值,endDate.get_selectedDate()会返回null,后续操作会直接报错。

修复后代码

$(document).ready(function () {
    var startDate = $find('<%= RdpStartDate.ClientID %>');
    var endDate = $find('<%= RdpEndDate.ClientID %>');

    // 封装更新开始日期最小值的公共方法
    function updateStartMinDate() {
        var end = endDate.get_selectedDate();
        // 结束日期未选中时不做限制,可根据自身业务需求调整规则
        if (!end) {
            startDate.set_minDate(null);
            return;
        }
        // 计算结束日期往前90天的日期,自动处理跨月、闰年等边界场景
        var minStartDate = new Date(end);
        minStartDate.setDate(minStartDate.getDate() - 90);
        startDate.set_minDate(minStartDate);
    }

    // 页面初始化时执行一次规则校验
    updateStartMinDate();

    // 监听结束日期的变更事件,值变化时同步更新开始日期的可选最小值
    endDate.add_dateSelected(updateStartMinDate);
});

内容的提问来源于stack exchange,提问作者Sanmeet Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:45:03