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
我如何檢查該範圍內的特定年份? –