项目中用到的总结
1.用js获取当前月份的天数
关键点:日期设为0
使用setDate设为0,即可返回当月的天数
2.js计算两个日期间的所有日期
其中还发现了个BUG,当获取到月的时候,需要数字+1,不然会出现010这种情况。第三个获取间隔月的函数即可同理推导出
while (endTime.getTime() - startTime.getTime()>=0)
这个循环条件,当为0时,包括结束日期(月)
transDate(datestr) {
let temp = datestr.split("-");
if (temp[1] === "01") {
temp[0] = parseInt(temp[0], 10) - 1;
temp[1] = "12";
} else {
temp[1] = parseInt(temp[1], 10) - 1;
}
//new Date()的月份入参实际都是当前值-1
let date = new Date(temp[0], temp[1], temp[2]);
return date;
}
/**
***获取两个日期间的所有日期
***默认start<end
**/
getDiffDate(start, end) {
let startTime = this.transDate(start);
let endTime = this.transDate(end);
let dateArr = [];
//循环到结束日期
while (endTime.getTime() - startTime.getTime()>=0) {
let year = startTime.getFullYear();
let month =
(startTime.getMonth()+1).toString().length=== 1
? "0" + (parseInt(startTime.getMonth().toString(), 10) + 1)
: startTime.getMonth() + 1;
let day =
startTime.getDate().toString().length === 1
? "0" + startTime.getDate()
: startTime.getDate();
dateArr.push(year + "-" + month + "-" + day);
startTime.setDate(startTime.getDate() + 1);
}
return dateArr;
}
//同理可得获取两个日期间的所有月
getDiffMonth(start, end) {
let startTime = this.transDate(start);
let endTime = this.transDate(end);
let dateArr = [];
//循环到结束日期
while (endTime.getTime() - startTime.getTime()>=0) {
let year = startTime.getFullYear();
let month =
(startTime.getMonth()+1).toString().length=== 1
? "0" + (parseInt(startTime.getMonth().toString(), 10) + 1)
: startTime.getMonth() + 1;
dateArr.push(year + "-" + month);
startTime.setMonth(startTime.getMonth() + 1);
}
return dateArr;
}