var today = new Date(); var currentQuarter = Math.floor((today.getMonth() + 1) / 3); var previousQuarter = currentQuarter - 1; var lastMonth = new Date(today.getFullYear(), today.getMonth(), today.getDate()); var yearQuarter = lastMonth.getFullYear(); if (previousQuarter < 1) { previousQuarter = 4; yearQuarter = yearQuarter - 1; } previousQuarter = previousQuarter.toString().padStart(2, '0'); var quer = yearQuarter + ' - ' + previousQuarter; var quarter = quer.slice(-1); var yearMonth = quer.substring(0, 4); let startMonth = (quarter - 1) * 3 + 1; let endMonth = startMonth + 2; let startDate = new Date(yearQuarter, startMonth - 1, 1); let endDate = new Date(yearQuarter, endMonth - 1, 1); endDate.setMonth(endDate.getMonth() + 1); endDate.setDate(endDate.getDate() - 1); startMonth = (startDate.getMonth() + 1).toString().padStart(2, '0'); endMonth = (endDate.getMonth() + 1).toString().padStart(2, '0'); document.getElementById('qt_1').value = startDate.getFullYear() + "-" + startMonth + "/" + endDate.getFullYear() + "-" + endMonth;这段代码导致我点开选择日历时日历的年显示的是1899,该怎么办
时间: 2024-02-26 14:56:59 浏览: 19
这段代码中涉及到了日期对象的操作,导致年份显示错误。在这里,endDate.setDate(endDate.getDate() - 1)这行代码是导致问题的原因。因为在设置endDate日期之后,又对它进行了修改,导致endDate的年份被修改为了默认值1899。
要解决这个问题,我们需要在endDate.setDate(endDate.getDate() - 1)之前获取endDate的年份,然后在修改之后将年份重新设置回去。
以下是修改后的代码:
```
var today = new Date();
var currentQuarter = Math.floor((today.getMonth() + 1) / 3);
var previousQuarter = currentQuarter - 1;
var lastMonth = new Date(today.getFullYear(), today.getMonth(), today.getDate());
var yearQuarter = lastMonth.getFullYear();
if (previousQuarter < 1) {
previousQuarter = 4;
yearQuarter = yearQuarter - 1;
}
previousQuarter = previousQuarter.toString().padStart(2, '0');
var quer = yearQuarter + ' - ' + previousQuarter;
var quarter = quer.slice(-1);
var yearMonth = quer.substring(0, 4);
let startMonth = (quarter - 1) * 3 + 1;
let endMonth = startMonth + 2;
let startDate = new Date(yearQuarter, startMonth - 1, 1);
let endDate = new Date(yearQuarter, endMonth - 1, 1);
// 获取endDate的年份
let endYear = endDate.getFullYear();
endDate.setDate(endDate.getDate() - 1);
// 将endDate的年份设置回去
endDate.setFullYear(endYear);
startMonth = (startDate.getMonth() + 1).toString().padStart(2, '0');
endMonth = (endDate.getMonth() + 1).toString().padStart(2, '0');
document.getElementById('qt_1').value = startDate.getFullYear() + "-" + startMonth + "/" + endDate.getFullYear() + "-" + endMonth;
```
这样修改后,应该就可以正确显示年份了。