const start = new Date('2015-01-15');
const end = new Date('2016-12-15');
while (start <= end) {
console.log( new Date(start) );
start.setMonth( start.getMonth() + 1 );
}
更动态的解决方案:
function getDatesBtween(from, to, day) {
const fromDate = new Date(from);
const toDate = new Date(to);
fromDate.setDate(day);
toDate.setDate(day);
const dates = [];
while (fromDate <= toDate) {
dates.push(new Date(fromDate));
fromDate.setMonth(fromDate.getMonth() + 1);
}
return dates;
}
const dates = getDatesBtween('2015-01-15', '2016-12-15', 15);
console.log(dates);
3条答案
按热度按时间deyfvvtc1#
你需要使用
setMonth
和getMonth
方法:**注意:**正如@RobG在评论中所说,我犯了一个错误,使用了这样的日期格式:
2015-12-01
为例。使用-
is not interpreted by all browsers的日期格式。最好使用/
字符。更动态的解决方案:
**注意:**正如@HBP在评论中提到的,上述解决方案没有考虑边缘情况,并且不适用于一个月的最后几天(
29th
,30th
和31st
)。例如,在某些情况下2015/02/31
=2015/03/03
,在其他情况下2015/03/02
(闰年)。下一个解决方案解决了这个问题:结果将类似于:
5fjcxozz2#
acruukt93#
我认为getDate()+ 1应该能够解决边界条件。