Как проверить, попадает ли текущее время в определенный диапазон в будний день с помощью jquery / javascript?

Когда пользователь посещает страницу, мне нужно проверить, приходится ли текущее время с 9:00 до 17:30 в будний день, и отображать что-то с помощью jquery / javascript, но я не уверен, как это проверить.

Может кто-нибудь помочь?

Спасибо


person kranthi    schedule 31.01.2012    source источник
comment
Вы просматривали документацию по объектам даты JavaScript?   -  person Pointy    schedule 31.01.2012


Ответы (4)


Надеюсь, это поможет:

function checkTime() {
    var d = new Date(); // current time
    var hours = d.getHours();
    var mins = d.getMinutes();
    var day = d.getDay();

    return day >= 1
        && day <= 5
        && hours >= 9 
        && (hours < 17 || hours === 17 && mins <= 30);
}
person jabclab    schedule 31.01.2012
comment
экспресс $ .inArray (d.getDate ()), [1 ..]) всегда оценивается как истина, потому что он возвращает -1 для сб-вс. Поэтому фильтрация по дням недели не выполняется. Исправление редактирования будет явно выбирать дни между 1-5 или с понедельника по пятницу по соглашению getDay. - person StanleyZheng; 27.02.2015

Просто добавил два цента к часу проверки ...

Я лично считаю, что лучший способ - проверить, находится ли он в диапазоне a: b - c: d ...

// check if h:m is in the range of a:b-c:d
// does not support over-night checking like 23:00-1:00am
function checkTime (h,m,a,b,c,d){
      if (a > c || ((a == c) && (b > d))) {
          // not a valid input
      } else {
           if (h > a && h < c) {
                return true;
           } else if (h == a && m >= b) {
               return true;  
           } else if (h == c && m <= d) {
               return true;
           } else {
                return false;
           }
      }
}

person Ray Xiao    schedule 01.10.2015

Используя текущее время, вы можете сделать что-то вроде этого:

var now = new Date(),
    day = now.getDay(),
    hours = now.getHours();

//Check if day is Mon-Fri
if(0 < day < 6) {
  //check between 9am and 5pm
  if(9 <= hours <= 17) {
     if(hours !== 17 || now.getMinutes() <= 30) {
          //your jQuery code here
     }
  }
}
person John Strickler    schedule 31.01.2012

У меня было требование, когда мне нужно было определить, находится ли время в одном объекте даты в пределах двух других. (Дата не имела значения, а только время).

Я так и сделал, думал может кому поможет.

/*
* d, start and end all are Date objects.
*/
const checkIfTimeIsInRange = (d, start, end) => {
    if (start.getHours() < d.getHours() && d.getHours() < end.getHours()) {
        return true;
    } else if (start.getHours() == d.getHours()) {
        if (d.getHours() == end.getHours()) {
            if(start.getMinutes() <= d.getMinutes() && d.getMinutes() <= end.getMinutes()) {    
                return true
            } else {
                return false
            }
        } else if(start.getMinutes() <= d.getMinutes()) {
            return true
        } else {
            return false
        }
    } else if (d.getHours() == end.getHours()) {
        if(d.getMinutes() <= end.getMinutes()) {
            return true
        } else {
            return false
        }
    } else {
        return false
    }
}

P.S. Любые улучшения, предложения приветствуются.

person gprathour    schedule 19.02.2020