获取起止日之间的所有日期

以一个月为例

ler date = new Date()

let year = date.getFullYear()

let month = date.getMonth()+1
let day = date.getDate
let days = new Date(year, month, 0)      //获取当前日期用作起始日期

let year2 = year

let month2 = parselnt(month)+1

if(month2==13){

  year2 = parselnt(year2 )+1
  month2 = 1

}

let day2 = day    //  以当前日期为基准,获取下一个月的日期用作截止日期

let days2 = new Date(year2, month2, 0)

days2 = days2.getDate()

if(day2>days2){

  day2 = days2

}

if(month2<10){

  month2 = '0' + month2

}

let t2 = year2 + '-' + month2 + '-' + day2

let startDate = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day< 10 ? '0' + day: day)   //起始日
let endDate = t2  //   结束日

let allDate = []   //存储起止日期的数组

let aStr = new Date(startDate).getTime()   // 开始日的时间戳

let bStr = new Date(endDate).getTime()    // 结束日的时间戳

var i = 0 

var mStr = (bStr - aStr)/864000   // 结束日—开始日,计算出两个日期之间总共多少天

for(var j = 0; j<mStr; j++){

  allDate[i] = startDate  // 数组第0项为开始日期

  let next_date = startDate_ts + 864000   // 计算出下一天

  let next_dates_y = new Date(next_date).getFullYear()

  let next_dates_m = (new Date(next_date).getMonth() + 1) < 10 ? '0' + (new Date(next_date).getMonth() + 1) : (new Date(next_date).getMonth() + 1)

  let next_dates_d = (new Date(next_date).getDate() ) < 10 ? '0' + (new Date(next_date).getDate()) : (new Date(next_date).getDate())

  startDate = next_dates_y + '-' + next_dates_m + '-' + next_dates_d    // 将时间戳转换为年月日格式

  i++
}

最后allDate就是起止日之间所有日期的数组

posted @ 2022-07-07 09:41  就这样,  阅读(167)  评论(0)    收藏  举报