我正在尝试在我的javascript中获取if语句。我用setInterval(function)
跟踪当前时间。在此间隔中,我将计划的日期时间与当前日期时间进行比较:
首先我使用简单的if(date1 == date2)
进行了检查,但我在互联网上找到了您应该使用getTime()
(找到here)
我现在得到了这个但是当值相等时它仍然给出错误:
setInterval(function()
{
console.log("current time: " + currentTime);
console.log("end production time: " + endProdTimeMachine2);
console.log(currentTime.getTime() === endProdTimeMachine2.getTime());
if(currentTime.getTime() === endProdTimeMachine2.getTime())
{
console.log("I'm in!!!");
}
},1000);
那么出了什么问题?它是间隔的东西吗?
答案 0 :(得分:2)
我假设你的检查中的毫秒数不匹配,因为setInterval的开始可以是任何毫秒:
if(currentTime.getTime() === endProdTimeMachine2.getTime())
您可以更改您的代码,并仅检查此时间戳是否更大,然后清除超时,以停止进一步检查:
var interval = setInterval(function() {
if(currentTime.getTime() >= endProdTimeMachine2.getTime()) {
console.log("I'm in!!!");
clearInterval(interval);
}
}, 1000);
答案 1 :(得分:1)
1000ms
间隔并不能保证您在完全相同的毫秒内读取它,实际上它是不太可能的。
您每秒都在运行该功能,但只读毫秒,因此您可以打开999ms
位移。
为避免这种情况,请将其与endProduction
范围内的999ms
进行比较,以便您知道自己与该确切时刻足够接近。
范围介于-499ms
和+500ms
之间的示例:
setInterval(function()
{
console.log("current time: " + currentTime);
console.log("end production time: " + endProdTimeMachine2);
var currentTimeMs = currentTime.getTime();
var endProdTimeMs = endProdTimeMachine2.getTime();
if (currentTimeMs >= (endProdTimeMs - 499) && currentTimeMs <= (endProdTimeMs + 500) )
{
console.log("I'm in!!!");
}
},1000);
否则,如果您需要,请将比较更改为:
if (currentTimeMs >= endProdTimeMs && currentTimeMs <= (endProdTimeMs + 999) )
答案 2 :(得分:0)
我可以举个例子:
var d1 = "abcd";
var d2 = "abcd";
console.log(d1 == d2); //prints true
d1 = new Date();
d2 = new Date(d1);
console.log(d1 == d2); //prints false
d1 = d2;
console.log(d1 == d2); //prints true
将数值与getTime()
进行比较:
d1 = new Date();
d2 = new Date(d1);
console.log(d1.getTime() == d2.getTime()); //prints true