美文网首页
js如何获取本周的日期时间(二,已完善)

js如何获取本周的日期时间(二,已完善)

作者: 辰漪 | 来源:发表于2021-12-01 11:35 被阅读0次
                /*
                 *@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", "-"))
    

    相关文章

      网友评论

          本文标题:js如何获取本周的日期时间(二,已完善)

          本文链接:https://www.haomeiwen.com/subject/rtdsxrtx.html