0

I have a function called getStuff which calls the setOverlay function only if hour and minutes falls within a given time range (startTimeHour and endTimeHour). However, I want getStuff to call setOverlay when hour and minutes falls outside of the given time range. How should I do this?

function getStuff(){
    if(startTimeHour != null && endTimeHour != null){
      if(hour < startTimeHour && endTimeHour > hour){
        setOverlay();
      }else if(startTimeHour == hour && endTimeHour == hour){
        if(startTimeMin < minutes && endTimeMin > minutes){
          setOverlay();
        }
      }else if(startTimeHour == hour){
        if(startTimeMin < minutes && endTimeMin > minutes){
          setOverlay();
        }
      }else if(endTimeHour == hour){
        if(startTimeMin < minutes && endTimeMin > minutes){
          setOverlay();
        }
      }
    }else{
      console.log("Could not get values")
    }
  }

1 Answer 1

1

You could convert the time to minutes by multiplying the hours by 60 (each hour has 60 minutes) and then adding the minutes.

function getStuff(){

    // add in any error checking
    if (startTimeHour === null || startTimeMinutes === null) {
        console.log("start is null");
        return;
    }

    let currentMinutes = hour * 60 + minutes;
    let startMinutes = startTimeHour * 60 + startTimeMinutes;
    let endMinutes = endTimeMinutes * 60 + endTimeMinutes;

    if (currentMinutes < startMinutes || currentMinutes > endMinutes) {
        setOverlay();
}
  }

Not the answer you're looking for? Browse other questions tagged or ask your own question.