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

2021-11-26  本文已影响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', '-'));

本文转自:辰漪博客

上一篇下一篇

猜你喜欢

热点阅读