如何在DataTable中比较和突出显示日期(有些条件)?

时间:2018-03-26 10:14:43

标签: javascript date datatable

"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
            var date = new Date();
            var date_now = ("0" + date.getDate()).slice(-2) + "-" + ("0" + (date.getMonth() + 1)).slice(-2) + "-" + date.getFullYear();
            var date_compare = (new Date(aData[10]) < new Date(date_now) ? true : false);
            console.log(date_now);
            console.log(aData[10]);
            console.log(date_compare);
            if(date_compare == true) {
                $('td', nRow).css('background-color', '#ff8080');
            }
            else {
                $('td', nRow).css('background-color', 'none');
            }
        },

这不起作用。

这个编码在javascript中的视图中aData [10]来自模型,SQL看起来像这样

SELECT DATE_FORMAT(DB.TGL_JATUH_TEMPO, '%d-%m-%Y') AS TGL_JATUH_TEMPO

这是结果

enter image description here

我想要的结果是 真正 真正 假

我想这样比较 如果我的SQL表中的日期&lt;今天的约会 然后突出显示红色列

问题是日期比较没有工作

谢谢你的帮助:)

2 个答案:

答案 0 :(得分:0)

我认为问题在于这一行

(new Date(aData[10]) < new Date(date_now)

它没有转换为日期格式。 如果您可以将日期格式传递为&#34; YY-MM-DD&#34;例如:2010-12-25这可能有效

var dateVar = "2010-10-30";
var d=new Date(dateVar);


var currDate = new Date();
if(d < currDate){
        alert("Entered Date is less than current Date");
}else{
        alert("Entered Date is greated than current Date");
}

工作小提琴here

答案 1 :(得分:0)

您的问题是,Date object无法识别日期字符串的格式,因此它始终返回null,因此它们始终相等,这就是为什么你的测试总是失败的原因。

您需要正确构建Date对象,以尊重RFC2822 specifications,以便Date.parse()可以解析Date

这是一个如何构建Date对象的示例:

var d1 = "25-03-2018";

var date1 = new Date(d1.substr(d1.length - 4), d1.substr(3, 2) - 1, d1.substr(0, 2));

<强>演示:

这是一个日期比较的演示:

&#13;
&#13;
var d1 = "25-03-2018";
var d2 = "26-03-2018";

console.log(d1.substr(d1.length - 4));
console.log(d1.substr(3, 2));
console.log(d1.substr(0, 2));


var date1 = new Date(d1.substr(d1.length - 4), d1.substr(3, 2) - 1, d1.substr(0, 2));

var date2 = new Date(d2.substr(d2.length - 4), d2.substr(3, 2) - 1, d2.substr(0, 2));

console.log(date1 < date2);
&#13;
&#13;
&#13;