【js】获取当前一周的日期

3,059 阅读1分钟

这几天刚好写到这个,逻辑其实不难,但是涉及到时间戳转换来转换去的,需要很细心走一遍。特此把代码记录一下。

代码

    // 获取当天0点的时间戳
    getStartTime(time) {
      const nowTimeDate = new Date(time)
      return nowTimeDate.setHours(0, 0, 0, 0)
    },
    // 时间戳转日期格式
    timestampToTime(timestamp) {
      var date = new Date(timestamp)
      var Y = date.getFullYear() + '-'
      var M =
        (date.getMonth() + 1 < 10
          ? '0' + (date.getMonth() + 1)
          : date.getMonth() + 1) + '-'
      var D = date.getDate()
      // var h = date.getHours() + ':';
      // var m = date.getMinutes() + ':';
      // var s = date.getSeconds();
      // return Y + M + D + ' ' + h + m + s
      return Y + M + D
    },
    // 获取一周的日期
    getWeekList(type) {
      let week = []
      for (var i = 0; i < 7; i++) {
        let weekObj = {
          name: this.weekName[i],
          date: '',
          timeStamp: '',
        }
        week.push(weekObj)
      }
      let today = this.getStartTime(Number(new Date())) // 当天时间戳
      let today_week = new Date().getDay() // 当天星期几
      if (today_week == 0) {
        // 若当天为周日
        week[6].timeStamp = today
      } else {
        week[today_week - 1].timeStamp = today
      }

      var leftNum = today_week - 1 // 本周内今天的前几天的数量
      var rightNum = 7 - today_week // 本周内今天的后几天的数量

      for (var left = 0; left < leftNum; left++) {
        week[left].timeStamp =
          today - (today_week - left - 1) * 1000 * 60 * 60 * 24
      }
      for (var right = 0; right < rightNum; right++) {
        week[right + today_week].timeStamp =
          today + (right + 1) * 1000 * 60 * 60 * 24
      }
      week.map((el) => {
        el.date = this.timestampToTime(el.timeStamp)
      })
      this.weekList = JSON.parse(JSON.stringify(week))
      console.log(this.weekList)
    },

简单逻辑就是

  1. 先将星期几的名字记录在一个数组week中;
  2. 获取到当天时间戳和当天星期几。这一步需要注意js获取星期几,周日-周六对应的是0-6,容易出错。还有就是我怕时间数据出错,获取当天的时间戳转成当天0点的时间戳
  3. 根据当天星期几获取到本周前几天的数量和后几天的数量,再通过循环遍历时间戳运算将本周每天的时间戳存入week数组;
  4. 最后通过遍历week数组,通过时间戳转化成日期格式,成功获取到当前一周的日期数据。

最终输出结果如下

image.png