[英]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.