JavaScript to check selected date is today's d

2019-09-16 05:53发布

问题:

How do I compare today's time and date with user selected date. If user selects today's date or tomorrow's date and time is 2pm or more than 2pm then I should show alert saying delivery time over.

I have tried something like this

$scope.checkDateTime=function(){                    
    angular.forEach($scope.orders.start_date,function(s){
        console.log(s);
        var curTime = moment().format('YYYY-MM-DD HH:mm:ss');
        var orderTime = s+' 14:00:00';
        console.log(moment(orderTime).diff(curTime,'seconds'));
        if(moment(orderTime).diff(curTime,'seconds')>86400) {
            console.log('hooray!')
        }
    })
}

I have orders.start_date is a input field inside ng-repeat so I am using forEach loop. I just want to check if selected date is today's or tomorrow's date. Then I have to check time, and if it's greater than 2pm then I should not allow. Otherwise I can allow.

回答1:

I am not sure when the acceptable order period starts (since checking if the day is today or tomorrow means that everything from 00:00 to 14:00 is a fair game) , but here is the is one way to do it based on your code:

$scope.checkDateTime = function(){                    
    angular.forEach($scope.orders.start_date, function(s){
        console.log(s);
        var selectedTime = moment(s);

        // create boundaries for time ranges
        var today_end =  moment("14:00","HH:mm"); // today 14:00
        var today_start =  moment().subtract(1,'day').endOf('day'); // end of yesterday (since we need to include 00:00 of today)
        var tomorrow_end =  moment("14:00","HH:mm").add(1,'day'); // tomorrow 14:00
        var tomorrow_start =  moment().endOf('day'); // end of today (since we need to include 00:00 of tomorrow)

        // check if time in questions fits any of the ranges
        if( ( selectedTime.isBetween(today_start, today_end) ||
            ( selectedTime.isBetween(tomorrow_start, tomorrow_end) )
            console.log('hooray!')
        }
    })
}

Note, that isBetween(t1, t2) does not include t1 and t2 into the accepted range.