我的情况是我的逻辑是将我的第0列(时间列表)与24小时的javascript时钟进行比较,并根据时间的接近程度在行上返回一个红绿灯颜色方案。
问题是当它的23:00(晚上11点)并且我的时间栏中有一个项目读作“上午2:10”(第二天),我的逻辑认为它是一个迟到的时间,并且不承认它是明天的项目。我的颜色编码逻辑有效,但如果cell [0] date等于系统日期(js clock),我只需执行此操作。
//date time object
var t = new Date();
// loops through each row
for (i = 0; i < rows.length; i++) {
cells = rows[i].getElementsByTagName('td');
//configures the clock
var hm = cells[0].innerText.split(":");
t.setHours(hm[0], hm[1], 0, 0);
var r = (t.getTime() - currentTime.getTime()) / 1000 / 60 / 60;
//logic executed
if (r <= 0.25 && cells[1].innerText == false)
rows[i].className = "ewTableRowConditionalRed";
else if (r > 0.25 & r <= 0.5 && cells[1].innerText == false)
rows[i].className = "ewTableRowConditionalYellow";
else if (r > 0.5 & r <= 2 && cells[1].innerText == false)
rows[i].className = "ewTableRowConditionalGreen";
}
答案 0 :(得分:0)
听起来你首先需要先比较两件事的日期(不是日期时间)。您可以使用getYear(),getMonth(),getDate()方法执行此操作。
var origDate = new Date(); //or the you're getting from the td
var roundedDate = new Date(origDate.getYear(), origDate.getMonth()+1, origDate,getDay());
请注意,getMonth()返回0到11之间的数字。
如果您的代码可能在不同的时区运行,最好转换为UTC日期并与之比较。