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

jQuery Datatables调用Moment.js报invalid date无效日期错误如何解决

问题原因分析
  • 格式不匹配:你的data.planning_deadline存储的日期格式为DD-MM-YYYY(示例值为21-10-2021),但调用moment解析时指定的格式是DD-MM-YYYY HH:mm:ss,多了时分秒的匹配规则,导致moment无法正确解析日期,控制台日志中的_isValid: false就是解析失败的明确标识。
  • 逻辑顺序错误:代码先执行日期解析,再判断data.planning_deadline是否为空,当data.planning_deadline是空值时,会直接生成无效的moment对象,后续调用diff方法也会出现异常,日志中的_i: ""就对应空值解析的场景。
修复方案

调整判断顺序,同时对齐日期解析格式即可,修复后代码如下:

rowCallback: function ( row, data ) {
    // 先过滤无效场景,再执行日期解析
    if (data.planning_deadline != "" && data.planning_afgehandeld == 0) {
        // 解析格式和实际值格式对齐
        var daysleft = moment(data.planning_deadline, 'DD-MM-YYYY');
        var now = moment(); 
        if ( daysleft.diff(now, 'days') <= 0 ){
            $('td:eq(0)', row).css('background-color', ' rgba(255, 0, 0, 0.2)');
        }
    }
}

如果需要兼容部分带时分秒的日期值,可以给moment传入多个解析格式,它会自动匹配可用的规则:
var daysleft = moment(data.planning_deadline, ['DD-MM-YYYY', 'DD-MM-YYYY HH:mm:ss']);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:54:05