/*
*@params date 时间对象/时间字符串/时间戳等等
*@params type {String} 值:prev/current/next 上周/本周/下周
*@params fmt {String} 日期连接符
*/
function getWeekList(date, type, fmt) {
let arr = []
// 格式化日期
const dateFormat = (date, fmt) => {
console.log(date, "datefoemat")
let y = date.getFullYear() // 年
console.log(y)
let m = date.getMonth() + 1 // 月
let d = date.getDate() // 日
return `${y}${fmt}${m}${fmt}${d}`
}
console.log(dateFormat(new Date("2021-12-28"), "```"))
let currentDate = new Date(date)
let w = currentDate.getDay() // 当前星期 0-6
let y = currentDate.getFullYear() // 当前年
let m = currentDate.getMonth() + 1 // 当前月
let d = currentDate.getDate() // 当前日期
if (w === 0) w = 7
// 先算出周一是几号 根据type类型计算
let Monday = 0
// 获取周一的年份 月份 日期
const getMonday = (zf) => {
if (zf <= 0) {
// 日期小于0 且当前星期不是0
if (m - 1 <= 0) {
// 月份<=0 年份-1
y = y - 1 // 年份 -1
m = 12 // 月份 = 12
let n = d - (w - 1) // 负的星期
Monday = new Date(y, m, 0).getDate() + n
console.log(y, m, Monday)
} else {
m = m - 1 // 月份 -1
let n = d - (w - 1) // 负的星期
Monday = new Date(y, m, 0).getDate() + n
console.log(y, m, Monday)
}
} else if (zf > 0) {
// 日期大于0
Monday = d - (w - 1)
console.log(y, m, Monday)
}
}
// 本周一
switch (type) {
case "current": // 本周
break
case "prev": // 上一周
if (d - 7 < 0) {
if (m - 1 < 1) {
m = 12
y = y - 1
d = new Date(y, m, 0).getDate() + (d - 7)
} else {
m = m - 1
d = new Date(y, m, 0).getDate() + (d - 7)
}
} else {
d = d - 7
}
break
case "next": // 下一周
if (d + 7 > new Date(y, m, 0).getDate()) {
if (m + 1 > 12) {
m = 1
y = y + 1
d = d + 7 - new Date(y - 1, 12, 0).getDate() // d + 7 大于 12月的天数多少天 就是几号
} else {
m = m + 1
d = d + 7 - new Date(y, m - 1, 0).getDate()
}
} else {
d = d + 7
}
break
}
getMonday(d - (w - 1)) // 获取周一日期
// 获取日期
const getDate = (mon, i) => {
if (mon + i > new Date(y, m, 0).getDate()) {
// 大于当月天数
Monday = -i + 1
mon = 1
if (m + 1 > 12) {
y += 1
m = 1
} else {
m += 1
}
console.log(m, i, "大于当月天数")
return dateFormat(new Date(`${y}-${m}-${mon}`), fmt)
}
console.log(y, m, mon + i)
console.log(dateFormat(new Date(y, m, mon + i, 0), fmt))
return dateFormat(new Date(`${y}-${m}-${mon + i}`), fmt)
}
// currentDate = new Date(y, m, Monday, 0)
console.log(currentDate, "currentDate")
// 往后推7天
for (let i = 0; i < 7; i++) {
arr[i] = getDate(Monday, i)
}
return arr
}
console.log(getWeekList(new Date(), "prev", "-"))
版权属于:
辰漪
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
2
牛逼666