javascript - 在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) 并且它们运行良好,只是这一部分导致了问题
解决方案
它对我来说很好,我试过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>
推荐阅读
- bash - bash-4.3 如何将 bash 中的字符串表达式解释为布尔值
- elasticsearch - 无法启动 Elasticsearch Enterprise/App Search
- sharepoint - 在电子邮件中包含指向 SharePoint 文档库中文档的链接
- python - 使用装饰器添加要请求的变量
- powershell - PSExec:cmd 在 [COMPUTER] 上退出,错误代码为 -196608
- python - 将@dataclass 与继承一起使用时出错
- javascript - 为什么使用reduce的这个函数末尾有一个数组?
- angular - 在 Angular8 上从 HTTP 迁移到 HTTPClient
- c# - 对话不是从第一句话开始的,而是在我按下键开始在 Unity 中开始对话之前开始的
- c++ - OpenGL 纹理无法正常工作 - 黑屏