美文网首页
js当前日期向前推3个月时的日期

js当前日期向前推3个月时的日期

作者: 遇而记起 | 来源:发表于2021-11-05 10:45 被阅读0次

    一、思路分析

    1.获取当前年月日,判断是否是闰年

    2.分析当前月有多少天,分类

    3.for循环累加 / 减 每月天数

    4.当前时加 / 减去相差天数,得到目标日期

    5.时间函数处理,提取目标年月日

    二、 好,请开始表演

    function getNewDate(flag, many) {

      const thirtyDays = [4, 6, 9, 11] // 30天的月份

      const thirtyOneDays = [1, 3, 5, 7, 8, 10, 12] // 31天的月份

      const currDate = new Date() // 今天日期

      const year = currDate.getFullYear()

      let month = currDate.getMonth() + 1

      let targetDateMilli = 0

      let GMTDate = '' // 中国标准时间

      let targetYear = '' // 年

      let targetMonth = '' // 月

      let targetDate = '' // 日

      let dealTargetDays = '' // 目标日期

      const isLeapYear =

        !!((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) // 是否是闰年

      // console.log(isLeapYear, "isLeapYear");

      let countDays = 0 // 累计天数

      for (let i = 0; i < many; i++) {

        if (flag === 'before') {

          month = month - 1 <= 0 ? 12 : month - 1

        } else {

          month = month + 1 > 12 ? 1 : month + 1

        }

        thirtyDays.includes(month)

          ? (countDays += 30)

          : thirtyOneDays.includes(month)

            ? (countDays += 31)

            : isLeapYear

              ? (countDays += 29)

              : (countDays += 28)

      }

      targetDateMilli = currDate.setDate(

        currDate.getDate() - (flag === 'before' ? countDays : countDays * -1)

      )

      GMTDate = new Date(targetDateMilli)

      targetYear = GMTDate.getFullYear()

      targetMonth = GMTDate.getMonth() + 1

      targetDate = GMTDate.getDate()

      targetMonth = targetMonth.toString().padStart(2, '0')

      targetDate = targetDate.toString().padStart(2, '0')

      dealTargetDays = `${targetYear}-${targetMonth}-${targetDate}`

      console.log(dealTargetDays, '处理的日期啊')

      return dealTargetDays

    }

    三,调用

    getNewDate("before", 3) //今天向前3个月

    getNewDate("after", 2)  //今天向后2个月

    相关文章

      网友评论

          本文标题:js当前日期向前推3个月时的日期

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