来自https://github.com/gf3/moment-range docs。
了解您的时刻是否在某个日期范围内:
var start = new Date(2012, 4, 1);
var end = new Date(2012, 4, 23);
var when = moment("2012-05-10", "YYYY-MM-DD");
var range = moment().range(start, end);
when.within(range); // true
更新:
这将检查星期几是否在范围内。
function checkDay(range, when) {
var isWithin = false;
range.by('days', function(moment){
if(when.within(range) && moment.day() === when.day) isWithin = true;
});
return isWithin;
}
console.log( checkDay(range, when) );
再次更新:
根据您的反馈,我认为这应该可以解决问题:
var startDate = new Date(2012, 4, 1);
var endDate = new Date(2012, 4, 23);
var dateRange = moment().range(startDate, endDate);
var days = [1,2,3,4,5]; // mon-fri
var startTime = moment('09:00 +0000', 'HH:mm Z'); // 9:00 am UTC
var endTime = moment('17:00 +0000', 'HH:mm Z'); // 5:00 pm UTC
var timeRange = moment().range(startTime, endTime);
function isWithin(dateRange, timeRange, days, when) {
return (when.within(dateRange) && !!~days.indexOf(when.day()) && moment(when.format('HH:mm Z'), 'HH:mm Z').within(timeRange));
}
var when = moment('2012-05-22 12:32 +0000', 'YYYY-MM-DD HH:mm Z');
console.log(isWithin(dateRange, timeRange, days, when));
我相信它可以让你清理一下,但我认为它应该让你朝着正确的方向前进。