function RealDate(start,end){
const dayTimes = 24*60*60*1000; // 换算成一天的毫秒数
const range = end.getTime() - start.getTime();
let total = 0;
res = [];
//用于判断total+start.getTime()是否小于等于end.getTime(),或者end.getTime()是否大于start.getTime()
while(total <= range && range > 0 ) {
res.push(new Date(start.getTime() + total).toLocaleDateString().replace(/\//g,'-'))
total += dayTimes
}
return res;
}
var start = "2022-09-04";
var end = "2022-09-13";
var arr = RealDate(new Date(start),new Date(end))
console.log(arr)
主要思路是换算成毫秒级别。采用new Date(ms),此ms表示的是需要与 GMT时间1970年1月1日之间相差的毫秒数。这样一来不需要自己判断每个月的天数,会自动转换。而toLocaleDateString()是根据该日期的日期格式的字符串。后面的正则,是因为不同浏览器toLocaleString的结果可能会出现’2019/09/02’的格式,所以替换。
total+start.getTime()<=end.getTime()
total<=end.getTime()-start.getTime()
total<=range