/*
*@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 且当前星期不是0
Monday = d - (w - 1)
console.log(y, m, Monday);
}
}
// 本周一
if (type === 'current') {
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(), 'current', '-'));
本文转自:辰漪博客