带有AND和日期的JavaScript if语句

时间:2017-05-24 12:27:41

标签: javascript

我有这样的陈述:

// 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语句中单独检查每个比较时,它可以工作但是和&&不是。

这里有什么问题?

4 个答案:

答案 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 :(");
}

希望这有帮助。