0

我有一种情况,我的逻辑是将我的第 0 列(时间列表)与 24 小时 javascript 时钟进行比较,并根据时间的接近程度在行上返回一个红绿灯配色方案。

问题是当它是 23:00(晚上 11 点)时,我的时间栏中有一个项目显示为“凌晨 2:10”(第二天),我的逻辑认为这是一个迟到的时间,并且不承认它是明天的项目。我的颜色编码逻辑有效,但我只需要在 cell[0] 日期等于系统日期(js 时钟)时执行此操作。

    //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";

    }
4

1 回答 1

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 日期。

于 2013-03-15T01:12:57.373 回答