How to check if current time falls within a specific range considering also minutes

前端 未结 4 717
囚心锁ツ
囚心锁ツ 2021-01-19 14:20

I am doing a Website for Restaurants Home Delivery ,depending on Restaurant\'s Home Delivery Timings i need to enable / disable Order Now Button

I have got startTim

4条回答
  •  野性不改
    2021-01-19 14:43

    Doesn't seem to work with times passing midnight, try changing the time from 6:30PM to 2:30AM. A good solution is to use momentjs with the moment-range plugin

    function inTimeRange(time, startTime, endTime)
    {
    //Setup today vars
    var today = new moment(new Date());
    var ayear   = today.year();
    var amonth  = today.month() + 1;  // 0 to 11
    var adate   = today.date();
    amonth  = String(amonth).length < 2 ? "0" + amonth : amonth;
    adate   = String(adate).length < 2 ? "0" + adate : adate;
    
    //Create moment objects
    var moment1, moment2;
    var temp = endTime.split(" ");
    if(temp[1].toLowerCase() == "am")
    {
        var test1 = ayear + "-" + amonth + "-" + adate + " " + startTime;
        var test2 = ayear + "-" + amonth + "-" + adate + " " + endTime;
    
        //Make sure that both times aren't morning times
        if(moment(test2).isAfter(test1))
        {
            var moment1String = ayear + "-" + amonth + "-" + adate + " " + startTime;
            var moment2String = ayear + "-" + amonth + "-" + adate + " " + endTime;
        }
        else
        {
            var moment1String = ayear + "-" + amonth + "-" + adate + " " + startTime;
            var moment2String = ayear + "-" + amonth + "-" + (adate + 1) + " " + endTime;
        }
    
        moment1 = moment(moment1String,       "YYYY-MM-DD HH:mm A");
        moment2 = moment(moment2String,       "YYYY-MM-DD HH:mm A");
    }
    else 
    {
        var moment1String = ayear + "-" + amonth + "-" + adate + " " + startTime;
        var moment2String = ayear + "-" + amonth + "-" + adate + " " + endTime;
        moment1 = moment(moment1String,       "YYYY-MM-DD HH:mm A");
        moment2 = moment(moment2String,       "YYYY-MM-DD HH:mm A");
    }
    
    //Run check
    var start = moment1.toDate();
    var end   = moment2.toDate();
    
    var when;
    if(String(time).toLowerCase() == "now")
    {
        when = moment(new Date());
    }
    else
    {
        var timeMoment1String = ayear + "-" + amonth + "-" + adate + " " + time;
        when = moment(timeMoment1String);
    }
    
    var range = moment().range(start, end);
    return when.within(range);
    }
    

提交回复
热议问题