仅在同一日期运行逻辑

时间:2013-03-14 18:31:07

标签: javascript jquery

我的情况是我的逻辑是将我的第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";

    }

1 个答案:

答案 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日期并与之比较。