JS实现:根据开始和结束时间,获取此时间段内所有日期并自定义输出格式

本文介绍了一个JavaScript函数,用于格式化指定时间段内(包括起始和结束日期)的所有日期,同时支持自定义间隔符。通过示例展示了如何获取从2022-06-14到2022-07-01之间的日期,并按周和间隔显示。
摘要由CSDN通过智能技术生成

一、函数代码

    // 1.处理日期格式
    getDate(datestr) {
      let temp = datestr.split('-')
      let date = new Date(temp[0], temp[1] - 1, temp[2])
      return date
    },
    // 2.获取时间段内的所有日期 Spacer:间隔符
    formatEveryDay(start, end, Spacer) {
      let weekArr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
      let dateList = []
      let startTime = this.getDate(start)
      let endTime = this.getDate(end)

      while ((endTime.getTime() - startTime.getTime()) >= 0) {
        let year = startTime.getFullYear()
        let month = startTime.getMonth() + 1 < 10 ? '0' + (startTime.getMonth() + 1) : startTime.getMonth() + 1
        let day = startTime.getDate().toString().length == 1 ? '0' + startTime.getDate() : startTime.getDate()
        let timeDay = startTime.getDay(startTime)
        // dateList.push({
        //   time: year + '-' + month + '-' + day,
        //   week: weekArr[startTime.getDay(startTime)],
        //   isWeekend: timeDay === 0 || timeDay === 6
        // })
        if (Spacer) {
          // 如果不需要间隔符则直接拼接返回
          if (Spacer === 'null') {
            dateList.push(year + month + day) // 如20220422,20220423
          } else {
            // 需要自定义间隔符
            dateList.push(year + Spacer + month + Spacer + day)
          }
        } else {
          dateList.push(year + '-' + month + '-' + day) // 2022-04-22,2022-04-23
        }
        startTime.setDate(startTime.getDate() + 1)
      }
      return dateList
    }

二、示例

1. 执行:formatEveryDay(‘2022-06-14’,‘2022-07-01’)
执行代码
2. 自定义分隔符 Spacer
formatEveryDay(‘2022-06-14’,‘2022-07-01’,‘-’)

在这里插入图片描述
在这里插入图片描述

三、获取指定时间范围内的全部日期,并对应星期几,是否周末

function formatEveryDay(start, end) {
      let weekArr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
      let dateList = []
      let startTime = this.getDate(start)
      let endTime = this.getDate(end)

      while ((endTime.getTime() - startTime.getTime()) >= 0) {
        let year = startTime.getFullYear()
        let month = startTime.getMonth() + 1 < 10 ? '0' + (startTime.getMonth() + 1) : startTime.getMonth() + 1
        let day = startTime.getDate().toString().length == 1 ? '0' + startTime.getDate() : startTime.getDate()
        let timeDay = startTime.getDay(startTime)
         dateList.push({
           time: year + '-' + month + '-' + day,
           week: weekArr[startTime.getDay(startTime)],
           isWeekend: timeDay === 0 || timeDay === 6
         })
        startTime.setDate(startTime.getDate() + 1)
      }
      return dateList
    }

执行:formatEveryDay(‘2022-06-14’,‘2022-07-01’)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值