"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
这是结果
我想要的结果是 真正 真正 假
我想这样比较 如果我的SQL表中的日期&lt;今天的约会 然后突出显示红色列
问题是日期比较没有工作
谢谢你的帮助:)
答案 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));
<强>演示:强>
这是一个日期比较的演示:
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;