美文网首页
js如何获取本周的日期时间(一)

js如何获取本周的日期时间(一)

作者: 辰漪 | 来源:发表于2021-11-26 17:13 被阅读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 且当前星期不是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', '-'));
    

    本文转自:辰漪博客

    相关文章

      网友评论

          本文标题:js如何获取本周的日期时间(一)

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