首页 > 其他分享 >获取时间段(根据开始时间以及结束时间获取 中间日期)

获取时间段(根据开始时间以及结束时间获取 中间日期)

时间:2023-06-13 14:11:53浏览次数:38  
标签:endDateInfo const startMax startDateInfo month 获取 时间 year 时间段

  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
  }

 

标签:endDateInfo,const,startMax,startDateInfo,month,获取,时间,year,时间段
From: https://www.cnblogs.com/lst619247/p/17477348.html

相关文章

  • 工作时间缩短神器,你用了吗?AI助手独家揭秘!
    像ChatGPT、Midjourney和Tome这样的新工具帮助专业人士节省时间并增加他们的收入。有些人说生成式人工智能将改变劳动力,但是它已经产生了影响。许多工人,特别是自由职业者和小企业主,为了摆脱了大公司的法律障碍,已经开始使用生成式人工智能工具来节省时间。他们说:新技术,包括图像和文......
  • NET CORE Configuraion 使用详解 获取配置文件参数 读取环境变量、读取配置文件、读取
    NETCOREConfiguraion使用详解获取配置文件参数读取环境变量、读取配置文件、读取Ini配置、读取Xml配置、多源配置读取顺序分析https://blog.csdn.net/qq_32109957/article/details/127998326相关配置<ProjectSdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Ex......
  • vue时间选择器 nut-datepicker
    vue时间选择器https://blog.csdn.net/Marshall_Ma/article/details/1242444511、年-月-日时:分效果展示:打开选择器:<divclass="label">记录日期:</div><nut-cell:showIcon="true":isLink="true"@click.native="switchPicker"......
  • C# 使用Expression代替反射获取动态类中的值
    示例代码:classPerson{publicintId{get;set;}publicstringName{get;set;}}privateobjectobj=newPerson{Id=123,Name="fred"};项目中的Class都是动态生成的,只好用object来存储。一般常规的方法是用反射去获取对应属性的值,由于......
  • 好用的几个IP地址信息获取API
    1. https://ipapi.co (每月免费查询3W条)支持返回 json, jsonp, xml, csv,yaml工具API文档:https://ipapi.co/api/#specific-location-field价格: 具体使用:get方式请求: https://ipapi.co/json(查询本机IP地址信息)https://ipapi.co/8.8.8.8/json(查询指定IP地址信息) ......
  • vue中使用axios获取不到响应头Content-Disposition的解决办法
    项目中,后端返回的文件流,fileName是机构名称+服务器时间。前端需要拿到响应头里的Content-Disposition字段的值,从中获取文件名在控制台Headers中可以看到相关的字段和文件名,但是在axios里面却获取不到 如果想要让客户端访问到相关信息,服务器不仅要在heade里添加,还要将它们在A......
  • 【解决方法】锐捷EVE-ng模拟器中VPC无法通过DHCP获取IP地址,改用接口获取地址
    环境:工具:锐捷EVE模拟器,VMwareWorkstationPro远程工具:SecureCRT系统版本:Windows10问题描述:描述:一个简单的DHCP环境,使用VPC充当PC客户机,IP地址获取为DHCP方式。但在发送request数据包后,服务器服务器已经把地址租用出去,但VPC中并没有收到ACK数据包,并没有正常获取到IP地址......
  • java 获取ftp文件列表以及模糊查询,并对结果进行分页
    /***获取ftp文件列表*".*\\.txt":匹配所有以".txt"结尾的文件名。其中,星号(*)表示任意字符序列,反斜杠(\)用于转义点号(.)字符。*".*"+"任意字符"+".*\\.txt":匹配所有包含"表示匹配任意多个任意字符"和以".txt"结尾的文件名。其中,星号(*)表示任意字......
  • 时间片轮转法
    时间片轮转法(Round-Robin,RR)主要用于分时系统中的进程调度。为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列。新来的进程加到就绪队列末尾。每当执行进程调度时,进程调度程序总是选出就绪队列的队首进程,让它在CPU上运行一个时间片的时间。时间片是一个小的时间单位......
  • ControlGet获取控件可见属性
    ControlGet获取控件的各种类型的信息.ControlGet,OutputVar,Cmd[,Value,Control,WinTitle,WinText,ExcludeTitle,ExcludeText]Cmd取值Visible:如果Control是可见的,则设置OutputVar为1;否则为0.可以是ClassNN(控件的类名和实例编号)或控件的文本,它们都可......