Javascript,用于不同的日期和时间

Javascript,用于不同的日期和时间,javascript,if-statement,days,hour,Javascript,If Statement,Days,Hour,我需要设置一个javascript函数,只运行这些天/小时组合-Sun(无)、Mon(4-5,8-23)、Tue-Thu(0-5,8-23)、Fri(0-5,8-21)、Sat(1-3,8-12,16) 这是正确的“如果”语句吗 var date = new Date(); var hour = date.getHours(); var day = date.getDay(); if ( (day !== 0) || (day == 1 &&

我需要设置一个javascript函数,只运行这些天/小时组合-Sun(无)、Mon(4-5,8-23)、Tue-Thu(0-5,8-23)、Fri(0-5,8-21)、Sat(1-3,8-12,16)

这是正确的“如果”语句吗

var date = new Date(); 
var hour = date.getHours(); 
var day = date.getDay();

if (

   (day !== 0)  || 

   (day == 1 && 

       (hour == 4 || hour == 5 ||  hour > 7)    )    ||

   (day > 1 && day < 6 && 

       (hour !== 6 && hour !==7)   )  ||

   (day == 5 &&

       (hour !== 22 && hour !== 23)   )  ||

   (day == 6 && 

       (hour > 0 && hour < 4 || hour > 7 && hour < 13 ||  hour == 16 ))
  )
var-date=新日期();
var hour=date.getHours();
var day=date.getDay();
如果(
(天!==0)|
(天==1&&
(小时=4小时=5小时>7)||
(第1天和第6天)
(小时!==6和小时!==7))||
(天==5&&
(小时!==22和小时!==23))||
(日==6日&&
(小时>0和小时<4小时>7和小时<13小时==16))
)

这是一种更简单的方法来编写您想要做的事情。将标志设置为false,如果满足某一天/小时组合,则将其更改为true。如果标志为true,则在末尾运行代码。将小时检查抽象为一个单独的函数。有很多其他的方法可以让它变得更好,但这里是我的尝试

var date = new Date(); 
var hour = date.getHours(); 
var day = date.getDay();

function isBetween(testNumber, lowerLimit, upperLimit) {
  return testNumber >= lowerLimit || testNumber <= upperLimit;
}

var flag = false;

if(day === 1 && (isBetween(hour, 4, 5) || isBetween(hour, 8, 23))) {
  flag = true;
}

if(isBetween(day, 2, 4) && (isBetween(hour, 0, 5) || isBetween(hour, 8, 23))){
  flag = true;
}

if(day === 5 && (isBetween(hour, 0, 5) || isBetween(hour, 8, 21))) {
  flag = true;
}

if(day === 6 && (isBetween(hour, 1, 3) || isBetween(hour, 8, 12) || hour === 16)) {
  flag = true;
}

if(flag) {
  // do something
}
var-date=新日期();
var hour=date.getHours();
var day=date.getDay();
函数isBetween(testNumber,lowerLimit,upperLimit){

return testNumber>=lowerLimit | | testNumber为了简化代码,让其他人更容易理解和调试,请使用日期和小时将代码应该在数组中运行的日期放在一个数组中。因此,星期一4点将存储为“2_4”。然后循环遍历数组,检查当前日期和时间是否与任何数组值匹配,然后如果有,请执行您的代码。以下是一个示例:

var date = new Date();
var hour = date.getHours();
var day = date.getDay();
var combined = day+'_'+hour;

//add additonal days when the code should run
var run_on = ['2_4','2_5','3_0', '3_1']; 

for (i = 0; i < run_on.length; i++){
    if (combined == run_on[i]){
    //execute your code
    break;
    }  
} 
var-date=新日期();
var hour=date.getHours();
var day=date.getDay();
var组合=天+小时;
//添加代码应该运行的额外天数
变量run_on=['2_4'、'2_5'、'3_0'、'3_1'];
对于(i=0;i

这将大大减少代码,如果有任何时间或日期需要添加或删除,您可以轻松地执行此操作,而无需每次都重写逻辑。

if语句有效吗?您测试过吗?OMG!!!什么if!!!不,它不正确。它将在任何时间的非星期日运行。谢谢您的帮助。看起来非常有用另外,我假设我可以在if后面添加“Else{//doother}”,用于任何“false标志操作”