情况我有一个源自Oracle DB的动态表。有一个名为“ScheduledTime”的列是TIMEStamp / shortTime,该变量与客户端javascript数字时钟进行比较。如果scheduledTime变量在当前时间(js clock)的特定时间内,那么我们将在表行返回操作。
即如果“scheduledTime”是< = 15mins of currentTime,则颜色为红色
问题 当它的23:00(晚上11点)并且有一个项目安排在凌晨2点(第二天)时,逻辑认为该项目是迟到的,因为它的读数“2”使得表格行颜色变红。
问题/可能的解决方案 我想我应该在颜色编码之前运行一个条件来比较TimeStamp日期而不是时间。如果日期不相等,那么不要执行颜色逻辑...你有什么想法..
当前代码
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";
答案 0 :(得分:1)
此库将帮助您将表中的日期文本解析为可用于进一步比较/操作的真实JS Date()对象:
答案 1 :(得分:0)
在我需要进行时间范围计算的几个项目中,我使用了时间范围的JavaScript库:https://github.com/gf3/moment-range
它应该能够处理你需要的东西。但是,你需要使用完整的日期和时间。