繁体   English   中英

具有AND和日期的JavaScript if语句

[英]JavaScript if-statement with AND and dates

我有这样的声明:

 // this is a date I select from input field and set its time to 12AM var date = new Date(new Date().setHours(0, 0, 0, 0)); console.log(date); var currentDate = new Date(); console.log(currentDate); if (date.getTime() === new Date(currentDate.setHours(0, 0, 0, 0)).getTime() && currentDate.getTime() > (new Date(currentDate.setHours(11,30,0,0)).getTime())) { console.log("It works!!!"); } else{ console.log("That didn't work as expected :("); } 

而且我不知道为什么它不起作用。 当我分别在IF语句中检查每个比较时,它可以工作,但与&&不能。

这里可能有什么问题?

 var date = new Date(new Date().setHours(0, 0, 0, 0)); console.log(date); var currentDate = new Date(); console.log(currentDate); if (date.getTime() === new Date(currentDate.setHours(0, 0, 0, 0)).getTime() && currentDate.getTime() > (new Date(currentDate.setHours(11,30,0,0)).getTime())) { console.log("It works!!!"); } else{ console.log("That didn't work as expected :("); } console.log(date.getTime() === new Date(currentDate.setHours(0, 0, 0, 0)).getTime()); console.log(currentDate.getTime() > (new Date(currentDate.setHours(11,30,0,0)).getTime())); 

这就是为什么,“这没有按预期进行:(“

最后,经过一些有趣的调试,我设法找到了您的问题。

线,

date.getTime() === new Date(currentDate.setHours(0, 0, 0, 0)).getTime()在您的第一个条件下正在使用代码currentDate.setHours(0, 0, 0, 0) ,这会使第二个条件失败。

因此,如果您将两者都带走,那将不起作用,

这是无效片段的示例。

 var date = new Date(new Date().setHours(0, 0, 0, 0)); console.log(date); var currentDate = new Date(); if(date.getTime() === new Date(currentDate.setHours(0, 0, 0, 0)).getTime() && currentDate.getTime() > (new Date(currentDate.setHours(11,30,0,0)).getTime())) { console.log("It works!!!"); } else{ console.log("That didn't work as expected :("); } 

现在,检查工作片段

  // this is a date I select from input field and set its time to 12AM var date = new Date(new Date().setHours(0, 0, 0, 0)); console.log(date); var currentDate = new Date(); if(date.getTime() === new Date(new Date().setHours(0, 0, 0, 0)).getTime() && currentDate.getTime() > (new Date(currentDate.setHours(11,30,0,0)).getTime())) { console.log("It works!!!"); } else{ console.log("That didn't work as expected :("); } 

我服用了

new Date().setHours(0, 0, 0, 0)).getTime() 代替

currentDate.setHours(0, 0, 0, 0)).getTime()因此currentDate在第一个条件下不会被修改。

这个怎么样:

 var date = new Date(); var today1130 = new Date(new Date().setHours(11,30)); console.log("input date is today: ", date.toDateString() === today1130.toDateString()); console.log("input date is after today 11:30: ", date > today1130); 

我认为它不起作用的原因是因为上午11:30到下午12:00之间的时间计算错误。 试试这个,让我知道:)

var todaysNoon = new Date();
var nextNoon = new Date();

todaysNoon.setHours(11,30,0,0);
if (todaysNoon <= nextNoon){ nextNoon.setDate(nextNoon.getDate()+1); }
nextNoon.setHours(11,30,0,0);

if (todaysNoon.getTime() <= new Date(nextNoon.setHours(0, 0, 0, 0)).getTime() && todaysNoon.getTime() <= new Date(nextNoon.setHours(0, 0, 0, 0)).getTime()) {
    console.log("It works!!!");
} else {
    console.log("That didn't work as expected :(");
}

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM