0

情况 我有一个来自 Oracle 数据库的动态表。有一个名为“ScheduledTime”的列,它是一个 TIMEStamp/shortTime,并且该变量与客户端 JavaScript 数字时钟进行比较。如果 scheduleTime 变量在当前时间(js 时钟)的特定时间范围内,则我们在表行上返回操作。

即如果“scheduledTime”<=currentTime 的 15 分钟,则将行着色为红色

问题 当它的 23:00(晚上 11 点)并且有一个项目安排在凌晨 2 点(第二天)时,逻辑认为该项目迟到了,因为它的读数为“2”,而且表格行颜色为红色。

问题/可能的解决方案 我想我应该在颜色编码之前运行一个条件,以比较时间戳日期而不是时间。如果日期不相等,则不要执行颜色逻辑......你的想法是什么......

当前代码

 var t = new Date();

 for (var i = 1, row; row = tbl.rows[i]; i++) {
        var hm = row.cells[0].innerText.split(":");
        t.setHours(hm[0], hm[1], 0, 0);
        var r = (t.getTime() - current.getTime()) / 1000 / 60 / 60;


        if(r <= 0.25)
            row.className = "Red";
        else if (r > 0.25 & r <= 0.5)
            row.className = "Yellow";
        else if (r > 0.5 & r <= 2)
            row.className = "Green";
4

2 回答 2

1

该库将帮助您将表格中的日期文本解析为真正的 JS Date() 对象,您可以使用该对象进行进一步的比较/操作:

https://code.google.com/p/datejs/#Parsing

于 2013-03-13T17:55:18.677 回答
0

在一些需要进行时间范围计算的项目中,我使用了矩范围 JavaScript 库:https ://github.com/gf3/moment-range

它应该能够处理你需要的东西。但是,您需要使用完整的日期和时间。

于 2013-03-13T17:44:32.627 回答