网上找的本周跨月会出现一点错误,自己记录一下。
注:0是空、1是今天、2是本周、3是本月(这是我开发时的一些参数,可自己更改)。
const selectTime = (e)=>{
let datenow = new Date()
let nowDay = datenow.getDate() //当前日
let nowMonth = (datenow.getMonth() + 1).toString().padStart(2, '0')//当前月
let nowYear = datenow.getFullYear() //当前年
let nowDayOfWeek = datenow.getDay() //今天本周的第几天
let startTime = ''
let endTime = ''
if(e == 0){
startTime = ''
endTime = ''
}else if(e == 1){
startTime = nowYear+'-'+nowMonth+'-'+nowDay
endTime = nowYear+'-'+nowMonth+'-'+nowDay
}else if(e == 2){
let lastDay = new Date(nowYear,nowMonth,0)
//本周
if (nowDayOfWeek == 0) {
// 计算本周第一天的日期
let start = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 6);
startTime = start.getFullYear()+'-'+start.getMonth().toString().padStart(2, '0')+'-'+start.getDate()
// 计算本周最后一天的日期
let end = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek)
endTime = end.getFullYear()+'-'+end.getMonth().toString().padStart(2, '0')+'-'+end.getDate()
} else {
let start = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1)
startTime = start.getFullYear()+'-'+start.getMonth().toString().padStart(2, '0')+'-'+start.getDate()
let end = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 7)
console.log(21,lastDay.getDate());
if( nowDay - nowDayOfWeek + 7 - lastDay.getDate() >= 0){
endTime = end.getFullYear()+'-'+(nowDay - nowDayOfWeek + 7 - lastDay.getDate()==0?end.getMonth().toString().padStart(2, '0')-1:end.getMonth().toString().padStart(2, '0'))+'-'+ (nowDay - nowDayOfWeek + 7 - lastDay.getDate()==0?lastDay.getDate():nowDay - nowDayOfWeek + 7 - lastDay.getDate())
console.log(22);
}else{
console.log(23);
endTime = end.getFullYear()+'-'+end.getMonth().toString().padStart(2, '0')+'-'+end.getDate()
}
// endTime = end.getFullYear()+'-'+end.getMonth().toString().padStart(2, '0')+'-'+end.getDate()
}
}else if(e == 3){
let lastDay = new Date(nowYear,nowMonth,0)
//本月
startTime = nowYear+'-'+nowMonth+'-'+1
endTime = nowYear+'-'+nowMonth +'-'+ lastDay.getDate()
}
console.log(startTime,endTime);
}