posts - 320,  comments - 29,  views - 115万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
复制代码
  const getRangeDate = function (startDate: Date, endDate: Date) {
    const targetArr = []
    const start = new Date(startDate)
    const end = new Date(endDate)
    const startDateInfo = {
      year: start.getFullYear(),
      month: start.getMonth(),
      day: start.getDate(),
    }
    const endDateInfo = {
      year: end.getFullYear(),
      month: end.getMonth(),
      day: end.getDate(),
    }
    if (startDateInfo.year === endDateInfo.year) {
      //同年
      if (startDateInfo.month !== endDateInfo.month) {
        //同年,不同月份
        //获取开始时间所在月的月底日期
        const startMax = new Date(
          startDateInfo.year,
          startDateInfo.month,
          0
        ).getDate()
        const endNum = startMax - startDateInfo.day + endDateInfo.day
        for (let i = startDateInfo.day; i <= startDateInfo.day + endNum; i++) {
          if (i > startMax) {
            targetArr.push(
              `${endDateInfo.year}-${
                endDateInfo.month < 10 ? endDateInfo.month : endDateInfo.month
              }-${i - startMax < 10 ? +(i - startMax) : i - startMax}`
            )
          } else {
            targetArr.push(
              `${startDateInfo.year}-${
                startDateInfo.month < 10
                  ? startDateInfo.month
                  : startDateInfo.month
              }-${i < 10 ? i : i}`
            )
          }
        }
      } else {
        //同年同月
        for (let i = startDateInfo.day; i <= endDateInfo.day; i++) {
          targetArr.push(
            `${startDateInfo.year}-${
              startDateInfo.month < 10
                ? startDateInfo.month
                : startDateInfo.month
            }-${i < 10 ? i : i}`
          )
        }
      }
    } else {
      //不同年   【既然不同年那肯定也不同月】
      const startMax = new Date(
        startDateInfo.year,
        startDateInfo.month,
        0
      ).getDate()
      const endNum = startMax - startDateInfo.day + endDateInfo.day
      for (let i = startDateInfo.day; i <= startDateInfo.day + endNum; i++) {
        if (i > startMax) {
          targetArr.push(
            `${endDateInfo.year}-${
              endDateInfo.month < 10 ? endDateInfo.month : endDateInfo.month
            }-${i - startMax < 10 ? i - startMax : i - startMax}`
          )
        } else {
          targetArr.push(
            `${startDateInfo.year}-${
              startDateInfo.month < 10
                ? startDateInfo.month
                : startDateInfo.month
            }-${i < 10 ? i : i}`
          )
        }
      }
    }

    return targetArr
  }
复制代码

 

posted on   刘世涛6192  阅读(130)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2019-06-13 HTML5 FormData实现文件上传实例
点击右上角即可分享
微信分享提示