Вот еще одна опция, которая добавляет метод непосредственно к прототипу Date:
var startDateTime = new Date('04/15/2019 00:15');
var endDateTime = new Date('05/17/2019 18:35');
var checkDateTime = new Date('04/16/2019 13:15');
var outOfRangeDate_EARLY = new Date('01/16/2019 13:15');
var outOfRangeDate_LATE = new Date('06/16/2019 13:15');
Date.prototype.inRange = function(startDate, endDate){
var this_ms = this.getTime();
return ( this_ms >= startDate.getTime() && this_ms <= endDate.getTime() )
}
/* Tests */
console.log('expected: true', 'actual:', checkDateTime.inRange(startDateTime, endDateTime))
console.log('expected: false', 'actual:', outOfRangeDate_EARLY.inRange(startDateTime, endDateTime))
console.log('expected: false', 'actual:', outOfRangeDate_LATE.inRange(startDateTime, endDateTime))
Таким образом, с любой датой у вас var someDate
, вы можете просто позвонить someDate.inRange(startDate, endDate)
.Иногда, однако, возня с нативными прототипами может вернуться к вам, если не проявить осторожность.Если это так, то иметь отдельную функцию, отвеченную другими, очень хорошо.
Наконец, очень важно, чтобы строки даты были правильно отформатированы перед созданием объектов Date
, в противном случае вы встретите Invalid Date
много.Надеюсь, это поможет.