方法获取格式化时间函数

formatDate (fmt) {
  const date = new Date()
  const o = {
    'Y+': date.getFullYear(),
    'M+': date.getMonth() + 1, // 月
    'D+': date.getDate(), // 日
    'h+': date.getHours(), // 时
    'm+': date.getMinutes(), // 分
    's+': date.getSeconds(), // 秒
    W: date.getDay() // 周
  }
  for (let k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) {
      fmt = fmt.replace(RegExp.$1, () => {
        if (k === 'W') {
          // 星期几
          const week = ['日', '一', '二', '三', '四', '五', '六']
          return week[o[k]]
        } else if (k === 'Y+' || RegExp.$1.length === 1) {
          // 年份 or 小于10不加0
          return o[k]
        } else {
          return ('00' + o[k]).substr(('' + o[k]).length) // 小于10补位0
        }
      })
    }
  }
  return fmt
}

使用

formatDate('YY') // 2022
formatDate('YY-MM')	// 2022-06
formatDate('YY-MM-DD')	// 2022-06-02
formatDate('YY-MM-DD hh:mm:ss')	// 2022-06-02 10:02:23
formatDate('星期W')	// 星期四

在这里插入图片描述
扩展
1.得到当前(年月日)

getNowMonths() {
      let timeOne = new Date();
      let year = timeOne.getFullYear();
      let month = timeOne.getMonth() + 1;
      let day = timeOne.getDate();
      month = month < 10 ? "0" + month : month;
      day = day < 10 ? "0" + day : day;
      const NOW_MONTHS_AGO = `${year}-${month}-${day}`;
      return NOW_MONTHS_AGO;
    }

2.得到三个月前的(年月日)

getThreeMonths() {
      let timeOne = new Date();
      let year = timeOne.getFullYear();
      let month = timeOne.getMonth() + 1;
      let day = timeOne.getDate();

      // 计算3个月后的月份
      let ThreeMonths = month - 3;

      // 如果小于 0 说明是去年
      if (ThreeMonths <= 0) {
        year = year - 1;
      }
      // 如果 等于 -2 说明当前月是 1 月份 所以三个月前是去年 10月
      if (ThreeMonths === -2) {
        ThreeMonths = 10;
      }
      // 如果 等于 -1 说明当前月是 2 月份 所以三个月前是去年 11月
      if (ThreeMonths === -1) {
        ThreeMonths = 11;
      }
      // 如果 等于 0 说明当前月是 3 月份 所以三个月前是去年 12月
      if (ThreeMonths === 0) {
        ThreeMonths = 12;
      }
      ThreeMonths = ThreeMonths < 10 ? "0" + ThreeMonths : ThreeMonths;

      // 获取当前的时间的日期字符串
      // **如果天数的值为零,则默认返回当前月份的最后一天
      let timeTow = new Date(year, ThreeMonths, 0);
      // 获取三个月前的最后一天
      let ThreeMonthsDay = timeTow.getDate();
      // 判断如果当前月份的天数大于三个月前的天数时,则当前天数等于三个月前的天数
      if (day > ThreeMonthsDay) {
        day = ThreeMonthsDay;
      }
      day = day < 10 ? "0" + day : day;
      // 格式化时间
      // const THREE_MONTHS_AGO = `${year}/${ThreeMonths}/${day}`

      // 生成时间戳  需要的话做
      //const THREE_STAMP = new Date(THREE_MONTHS_AGO).getTime()
      const THREE_STAMP = `${year}-${ThreeMonths}-${day}`;
      return THREE_STAMP;
    },

进阶版封装方法

function getDate(type = null, number = 0) {
      var nowdate = new Date();
      switch (type) {
        case "day": //取number天前、后的时间
          nowdate.setTime(nowdate.getTime() + 24 * 3600 * 1000 * number);
          var y = nowdate.getFullYear();
          var m = nowdate.getMonth() + 1;
          var d = nowdate.getDate();
          var retrundate = `${y}-${m}-${d}`;
          break;
        case "week": //取number周前、后的时间
          var weekdate = new Date(nowdate + 7 * 24 * 3600 * 1000 * number);
          var y = weekdate.getFullYear();
          var m = weekdate.getMonth() + 1;
          var d = weekdate.getDate();
          var retrundate = `${y}-${m}-${d}`;
          break;
        case "month": //取number月前、后的时间
          nowdate.setMonth(nowdate.getMonth() + number);
          var y = nowdate.getFullYear();
          var m = nowdate.getMonth() + 1;
          var d = nowdate.getDate();
          var retrundate = `${y}-${m}-${d}`;
          break;
        case "year": //取number年前、后的时间
          nowdate.setFullYear(nowdate.getFullYear() + number);
          var y = nowdate.getFullYear();
          var m = nowdate.getMonth() + 1;
          var d = nowdate.getDate();
          var retrundate = `${y}-${m}-${d}`;
          break;
        default: //取当前时间
          var y = nowdate.getFullYear();
          var m = nowdate.getMonth() + 1;
          var d = nowdate.getDate();
          var retrundate = `${y}-${m}-${d}`;
      }
      return retrundate;
    }

测试
console.log(getDa)

Logo

前往低代码交流专区

更多推荐