function getMonthWeek(dateParams) {
let date = dateParams ? new Date(dateParams) : new Date()
let y = date.getFullYear()
let m = date.getMonth()
let day = date.getDate()
let dayArr = [31,28,31,30,31,30,31,30,30,31,30,31]
if ( (y % 4 ===0) && (y % 100 !==0 || y % 400 ===0) ) {
dayArr[1] = 29
}
let monthDays = dayArr[m]
date.setFullYear(y, m, 1)
let w1 = date.getDay()
let sunday = 7
let weekNum = 1
let sundayArr = []
let nextMonthFlag = false
if (w1 != 1) {
sunday = 7 - w1 + 1
}
for (sunday; sunday <= monthDays; sunday+=7) {
sundayArr.push(sunday)
}
// console.log(sundayArr)
if (day > sundayArr[sundayArr.length - 1]) {
nextMonthFlag = true
} else {
for(let i = 0; i < sundayArr.length; i++) {
if (sundayArr[i] > day) {
weekNum = i + 1
break
}
}
}
// 如果当前日期是月底,则划分到下一个月的第一周
if (nextMonthFlag) {
return {
year: m == 11 ? y + 1 : y,
month: m == 11 ? 1 : m + 2,
weekNum: 1
}
}
return {
year: y,
month: m + 1,
weekNum: weekNum
}
}
let a = getMonthWeek('2020-05-30')
console.log(JSON.stringify(a))
console