以上代码中,startDate 提示为无效Date
时间: 2024-03-17 12:45:32 浏览: 64
如果 `startDate` 和 `endDate` 的值是字符串类型的日期,需要使用 `new Date(dateString)` 的方式来创建 `Date` 对象。同时,为了避免因为时区的问题而导致日期计算错误,建议在创建 `Date` 对象时指定时区为 UTC 时间。
修改后的代码如下:
```javascript
function getMonthsBetweenDates(start, end) {
const startDate = new Date(`${start}T00:00:00Z`);
const endDate = new Date(`${end}T00:00:00Z`);
const months = [];
let currentDate = startDate;
while (currentDate <= endDate) {
const year = currentDate.getUTCFullYear();
const month = currentDate.getUTCMonth() + 1; // 月份从 0 开始,需要加 1
months.push(`${year}${month.toString().padStart(2, '0')}`);
// 将日期加 1 个月
currentDate.setUTCMonth(currentDate.getUTCMonth() + 1);
}
return months;
}
const start = '20210331';
const end = '20230615';
const months = getMonthsBetweenDates(start, end);
console.log(months);
```
上述代码中,我们添加了 `T00:00:00Z` 来指定时区为 UTC 时间。同时,我们使用 `getUTCFullYear()` 和 `getUTCMonth()` 方法来获取年份和月份。