js封装获取当前周数据
/* * @Author: 张大碗 zhangjunhui@mangocosmos.com * @Date: 2023-09-20 17:36:15 * @LastEditors: 张大碗 zhangjunhui@mangocosmos.com * @LastEditTime: 2023-10-08 11:04:08 * @FilePath: \vue-vant2-template-master\vue-vant2-template-master\src\utils\week.js * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ // 根据参数日期获取具体日期信息 export const formatDate = function (date = new Date()) { let year = date.getFullYear() let month = date.getMonth() + 1 let day = date.getDate() let week = ['日', '一', '二', '三', '四', '五', '六'][date.getDay()] const dateInfo = { date: new Date(date), dateStr: `${year}-${month.toString().padStart(2, '0')}-${day .toString() .padStart(2, '0')}`, dateStr1: `${month.toString().padStart(2, '0')}-${day .toString() .padStart(2, '0')}`, year, month, day, week, isToday: false, } const today = new Date() // 判断是否为当天 if ( today.getFullYear() === year && today.getMonth() + 1 === month && today.getDate() === day ) { dateInfo['isToday'] = true } return dateInfo } // 根据基准日期,获取长度为dayLenth的日期数组 export const setDate = function (date = new Date(), step = 7) { let weekData = [] const week = date.getDay() > 0 ? date.getDay() - 1 : 0 date = getDateByDate(date, week * -1) if (date.getDay() > 0) { for (let i = 0; i < step; i++) { weekData.push(formatDate(i == 0 ? date : getDateByDate(date, 1))) } } else { for (let i = 0; i < step; i++) { weekData.push(formatDate(getDateByDate(date, 1))) } } return weekData } // 根据基准日期获取前后某天的日期对象 export const getDateByDate = function (date = new Date(), range = 0) { date.setDate(date.getDate() + range) return date } /* 获取以baselineDate所在周的一周、前一周、下一周的日期和星期信息(切换周期也可通过参数dayLenth自行设置) baselineDate: 设置的基准日期(返回的日期列表的第一个日期) range: 以 baselineDate 为基准日期的前后天数范围(如基准日期的range为0,需要返回前7天日期,则range为-7,后7天则range为7) step: 需要获取的日期信息周期天数,默认获取baselineDate所在周的一周日期信息 new Date().getDay() > 0 ? 0 : -7, 当周日时有bug 显示默认前7天,不然显示后7天 */ export const getWeekDate = ({ baselineDate = new Date(), range = new Date().getDay() > 0 ? 0 : -7, step = 7, }) => { return setDate(getDateByDate(baselineDate, range), step) } // read me // // 获取当天所在星期数据 // getWeekDate({ baselineDate: new Date() }) // // 获取以当天为基准日期的上星期数据 // getWeekDate({ // baselineDate: new Date(), // range: -7, // }) // // 获取以当天为基准日期的下星期数据 // getWeekDate({ // baselineDate: new Date(), // range: 7, // }) // // 获取当天日期信息 // formatDate(getDateByDate());