0
我试图使用moment.js和时间范围来确定给定的日期范围是否包含闰年和闰年(2月29日)。在瞬间范围内寻找闰年
// Really checks for leap day, not only leap year.
function dateRangeContainsLeapYear(dateRange) {
return dateRange.toArray('years').some((year) => {
return year.isLeapYear() && dateRange.contains(moment([year.year(), 1, 29]));
});
}
// Scenario 1
var start = moment('2015-07-01', 'YYYY-MM-DD');
var end = moment('2016-06-30', 'YYYY-MM-DD');
var dateRange = moment().range(start, end);
var dateRangeLength = dateRange.toArray('days').length; // 366
var output = dateRangeContainsLeapYear(dateRange);
console.log(output); // false
// Scenario 2
var start = moment('2015-07-01', 'YYYY-MM-DD');
var end = moment('2016-07-01', 'YYYY-MM-DD');
var dateRange = moment().range(start, end);
var dateRangeLength = dateRange.toArray('days').length; // 367
var output = dateRangeContainsLeapYear(dateRange);
console.log(output); // true
// Scenario 3
var start = moment('2016-01-01', 'YYYY-MM-DD');
var end = moment('2016-06-30', 'YYYY-MM-DD');
var dateRange = moment().range(start, end);
var dateRangeLength = dateRange.toArray('days').length; // 182
var output = dateRangeContainsLeapYear(dateRange);
console.log(output); // true
// Scenario 4
var start = moment('2015-07-01', 'YYYY-MM-DD');
var end = moment('2017-06-30', 'YYYY-MM-DD');
var dateRange = moment().range(start, end);
var dateRangeLength = dateRange.toArray('days').length; // 731
var output = dateRangeContainsLeapYear(dateRange);
console.log(output); // true
方案1为假为dateRange.toArray('years')
仅包含一个元素,即只有2015年
什么是解决它的最好方法?
的jsfiddle:https://jsfiddle.net/wwwescape/es931aa5/
你不想只检查二十九吗? – vassiliskrikonis
我如何检查该范围内的特定年份? –