首页 > 解决方案 > 在javascript中相等日期值时出现问题

问题描述

我正在运行一些包含在 setInterval 计时器中的代码;除其他外,在某个时间之前,它应该显示“模拟在 xxx 时间开始”消息。

startdate 是模拟开始的时间,我已经定义了其他变量如下:

var d = new Date();
var da = d.getDate();
var h = d.getHours();
var mo = d.getMonth();


if ((mo != 3) || (mo == 3 && da === (startdate - 9)) 
  || (mo == 3 && da == (startdate - 8) && h < 21)) {
    document.getElementById("infoWindow").innerHTML = 
      "<p style=\"color:red;\">Placeholder text</p>";
}

所以,如果我将 startdate 设置为(比如)10 并且月份是 4 月,我应该在 1 号和 2 号晚上 9 点之前收到一条消息。但是当我运行上面的代码时,它会跳过大括号中的部分。我已经设置了我的计算机时钟以确保代码可以正常工作,例如,将其设置为 4 月 1 日和 4 月 2 日,从中午到晚上 9 点的任何时间,但我什么也没得到。

在 Firefox 调试器中,当我在“if...”语句中设置断点并查看“da”的值时,它显示“false”而不是数值。用“==”替换“===”没有区别,因为我认为它与返回的日期和日期命令的真/假返回混淆了。我看不出有什么问题。

在代码的其他部分,我进行了其他检查以确保代码按时执行,例如 (da==startdate+5) 并且它们运行良好,只是这一部分导致了问题

标签: javascript

解决方案


它对我来说很好,我试过startdate = 34,今天检查,然后调整我的电脑时钟,仍然可以。你不会忘记<div id="infoWindow"></div>你的html代码吗?

 var d = new Date();
 var da = d.getDate();
 var h = d.getHours();
 var mo = d.getMonth();
 
var startdate = 34;

if( (mo !=3) || ( mo==3 && da===(startdate-9)) || ( mo==3 && da==(startdate-8) && h<21) ) {
  document.getElementById("infoWindow").innerHTML = "<p style=\"color:red;\">Placeholder 		text</p>";
}
<div id="infoWindow"></div>


推荐阅读