根据日期获取对应时间范围和划分一个月为几周

247 阅读1分钟

根据日期获取对应时间范围

    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)