笔者发现前端获取系统前一天的日期比较繁琐,没有java方便,经过查找资料后发现一种简单方法,详情如下:
1、首先vue项目中要安装到moment.js

获取前一天的日期

 moment().subtract(1, 'day').format('YYYY-MM-DD') //1,day就代表前一天

如果要获取前一个月或者前一年就将day换成month或者year,剩下的时间可以根据实际情况来定
例如前一月

moment().subtract(1, 'month').format('YYYY-MM-DD')

前一年

 moment().subtract(1, 'year').format('YYYY-MM-DD')

如果要按照具体的时间来的话,在’moment()'中加入对应格式的日期字符串比如’moment(‘2022-3-21’).subtract(2, ‘day’).format(‘YYYY-MM-DD’))

2、使用原生js
<script>
    let a = getFMdate(0)
    let b = getFMdate(-1)
    let c = getFMdate(8)
    console.log(a, b, c)

    function getFMdate (number, separator) {
      let n = parseInt(number)
      let nd = new Date()
      let day = nd.getDate()
      let setd = new Date(nd.setDate(day + n))
      let ryear = setd.getFullYear()
      let rmonth = setd.getMonth() + 1
      let rday = setd.getDate()
      let frmonth, frday;
      // month day + '0'
      if (rmonth < 10) {
        frmonth = '0' + rmonth
      } else {
        frmonth = rmonth
      }
      if (rday < 10) {
        frday = '0' + rday
      } else {
        frday = rday
      }
      // separator
      let sep = separator ? separator : '-'
      return ryear + sep + frmonth + sep + frday
    }
  </script>

传入 0 , 获取今天日期

传入负数, 获取过去N天日期

传入整数, 获取未来N天日期

这里主要是对setDate / setMonth / setYear的一个运用,笔者还是建议直接使用vue的moment()方法,底层已经帮我们封装好,不用计算跨月第一天的前一天或者跨年的前一天,省去了代码的冗余度,提高效率。

3.也是vue获取,但是没有第一种那么简单暴力
// 前一天
    beforeDay() {
      //前一天
      let beforeDay = new Date(
        new Date(this.alarmformSearch.date).getTime() - 24 * 60 * 60 * 1000
      ); //计算当前日期 -1
      this.alarmformSearch.date = this.convertToDate(beforeDay); //格式化日期并赋值

      this.getWarnInfo();
    },
// 前两天
    beforeTwoDay() {
      //前一天
      let beforeTwoDay = new Date(
        new Date(this.alarmformSearch.date).getTime() -
          24 * 60 * 60 * 1000 -
          24 * 60 * 60 * 1000
      ); //计算当前日期 -1
      this.alarmformSearch.date = this.convertToDate(beforeTwoDay); //格式化日期并赋值

      this.getWarnInfo();
    },
convertToDate(date) {
      var date = new Date(date);
      var y = date.getFullYear();
      var m = date.getMonth() + 1;
      var d = date.getDate();
      m = m < 10 ? "0" + m : m; //月小于10,加0
      d = d < 10 ? "0" + d : d; //day小于10,加0
      return y + "-" + m + "-" + d;
    },

对比下来感觉第三种还不如写原生js,哈哈,还好vue底层帮我们封装好了现成的moment()方法,很方便

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐