根据日期获取对应时间范围
function getRangeTimeByDate (date, type) {
const t = new Date(date)
let startRangeDate = new Date(date).getTime()
let endRangeDate = new Date(date).getTime()
if (type === 'week') {
let weekIndex = t.getDay() || 7
startRangeDate = t.setDate(t.getDate() - weekIndex + 1)
endRangeDate = t.setDate(t.getDate() - t.getDay() + 7)
} else if (type === 'momth') {
startRangeDate = new Date(t.getFullYear(), t.getMonth(), 1)
endRangeDate = new Date(t.getFullYear(), t.getMonth() + 1, 0)
} else if (type === 'year') {
startRangeDate = new Date(t.getFullYear(), 0, 1)
endRangeDate = new Date(t.getFullYear() + 1, 0, 0)
}
return [new Date(startRangeDate).setHours(0, 0, 0, 0), new Date(endRangeDate).setHours(23, 59, 59, 999)]
}
const [startDate, endDate] = getRangeTimeByDate (new Date, 'week')
console.log(new Date(startDate))
console.log(new Date(endDate))
根据日期划分一个月为几周
function chunkWeekByMonth (date) {
const [startRangeDate, endRangeDate] = getRangeTimeByDate (new Date, 'month')
let ts = new Date(startRangeDate)
let te = new Date(endRangeDate)
let weekDateList = []
let weekStartIndex = ts.getDay() || 7
let monthLength = te.getDate() - ts.getDate() + 1
let tempT = new Date(ts)
for (let index = 1; index < monthLength + weekStartIndex; index++) {
let startIndex = Math.max(weekStartIndex, index)
index += 6
let endIndex = Math.min(monthLength + weekStartIndex - 1, index)
weekDateList.push([tempT.setDate(startIndex - weekStartIndex + 1), tempT.setDate(endIndex - weekStartIndex + 1)])
}
return weekDateList
}
const chunkWeekList = chunkWeekByMonth (new Date)