获取两个日期之间的日期数组,由dayofweek过滤

时间:2017-04-06 08:00:57

标签: javascript angularjs momentjs

我有一个如下对象:

{
  startDate: moment(),
  endDate: moment().add(3, "weeks"),
  friday: true
  monday: true
  saturday: false
  sunday: false
  thursday: false
  tuesday: false
  wednesday: true
}

在startDate和endDate之间获得与工作日布尔值相匹配的日期数组的最佳方法是什么?

预期结果:[...日期(),日期(),日期()......]

2 个答案:

答案 0 :(得分:1)

您只需使用addisBefore时间从startDate循环到endDate

您可以使用format('dddd')获取星期几。

如果您需要使用toDate()将时刻转换为JavaScript日期

这是一份工作样本:



function getDateArray(obj){
  var start = obj.startDate.clone();
  var end = obj.endDate.clone();
  var res = [];
  while(start.isBefore(end)){
    var day = start.format('dddd').toLowerCase();
    if( obj[day] ){
      res.push(start.toDate());
    }
    start.add(1, 'd');
  }
  return res;
}

var obj = {
  startDate: moment(),
  endDate: moment().add(3, "weeks"),
  friday: true,
  monday: true,
  saturday: false,
  sunday: false,
  thursday: false,
  tuesday: false,
  wednesday: true
};
var res = getDateArray(obj);
console.log(res);

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

时刻的差异返回两个日期之间的天数 endDate.diff(startDate,&#39; days&#39;)

然后从开始到开始+差异forloop并且每个添加一天 到每一天()。添加(1,&#39;天&#39;)