我有这样的陈述:
// 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语句中单独检查每个比较时,它可以工作但是和&&不是。
这里有什么问题?
答案 0 :(得分:2)
systemdict | globaldict | userdict

这就是为什么,"那并没有像预期的那样发挥作用:("
答案 1 :(得分:1)
最后,经过一些有趣的调试,我找到了你的问题。
这一行,
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
在第一个条件中不会被修改。
答案 2 :(得分:0)
这个怎么样:
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);
答案 3 :(得分:0)
我认为它之所以不起作用,是因为在上午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 :(");
}
希望这有帮助。