Moment.js - 获取日期范围之间的所有星期一

Nic*_*las 6 javascript momentjs typescript angular

我的日期范围看起来像这样

let start = moment(this.absence.FromDate);
let end = moment(this.absence.ToDate);
Run Code Online (Sandbox Code Playgroud)

用户可以决定在该日期范围内停用特定的工作日,因此我有布尔值

monday = true;
tuesday = false;
...
Run Code Online (Sandbox Code Playgroud)

我想创建一个函数,允许我将日期范围内的所有星期一放在数组中.

我在堆栈上四处看看,但我只能找到一个月需要所有星期一的人的帮助.

Vin*_*zoC 10

您可以在下周一使用.day(1),然后循环,直到您的日期为isBefore您的end日期,每次迭代使用增加7天add

这是一个实时样本:

//let start = moment(this.absence.FromDate);
//let end = moment(this.absence.ToDate);

// Test values
let start = moment();
let end = moment().add(45 , 'd');

var arr = [];
// Get "next" monday
let tmp = start.clone().day(1);
if( tmp.isAfter(start, 'd') ){
  arr.push(tmp.format('YYYY-MM-DD'));
}
while( tmp.isBefore(end) ){
  tmp.add(7, 'days');
  arr.push(tmp.format('YYYY-MM-DD'));
}
console.log(arr);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)