在以下代码中,查看时间是否低于上午8:30。它工作正常(在时间凌晨2:26测试):
function workingSchedule() {
var h = new Date().getHours();
var m = new Date().getMinutes();
if (h < 8 && m < 30) {
window.alert("Sorry, we're not working at these hours.");
}
}
但是,如果我希望代码检查1)它是否早于上午8:30; 2)它比中午12点晚,它不会工作。
function workingSchedule() {
var h = new Date().getHours();
var m = new Date().getMinutes();
if ((h < 8 && m < 30) && h > 12) {
window.alert("Sorry, we're not working at these hours.");
}
}
基本上,我的工作时间表从上午8:30到下午12:00,下午2:00到下午5:00。我想显示提醒窗口文字&#34; 抱歉,我们这些时间没有工作&#34;每当机器(电脑,笔记本电脑,手机)的时间在这些时间之间不时。
&&
运算符或if
语句或两者都有问题吗?
答案 0 :(得分:2)
您想在中午之后检查是否是8:30 或,而不是中午之后和。那是||
,而不是&&
。
基本上,我的工作时间表从上午8:30到下午12:00,下午2:00到下午5:00。
您当前的代码会检查是否在晚上1点之后。 (“大于12小时”),不是在中午之后。它也不处理2-5班次。
所以,请参阅评论:
if (h < 8 || // It's before 8 a.m.
(h === 8 && m < 30) || // It's 8:00-8:29 a.m.
(h >= 12 && h < 14) || // It's 12:00-1:59 p.m.
h >= 17 // It's 5 p.m. or later
) {
答案 1 :(得分:0)
您同时询问了h < 8
和 h > 12
。显然,这绝不是真的。
您很可能打算使用或代替:
(h < 8 && m < 30) || h > 12
查看javascript&#39; list of logical operators,但知道
expr1 || expr2
如果可以转换为true,则返回expr1
;否则,返回expr2
。因此,当与布尔值一起使用时, ||如果任一操作数为真,则返回true。