我有一个如下对象:
{
startDate: moment(),
endDate: moment().add(3, "weeks"),
friday: true
monday: true
saturday: false
sunday: false
thursday: false
tuesday: false
wednesday: true
}
在startDate和endDate之间获得与工作日布尔值相匹配的日期数组的最佳方法是什么?
预期结果:[...日期(),日期(),日期()......]
答案 0 :(得分:1)
您只需使用add
和isBefore
时间从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;
答案 1 :(得分:0)
时刻的差异返回两个日期之间的天数 endDate.diff(startDate,&#39; days&#39;)
然后从开始到开始+差异forloop并且每个添加一天 到每一天()。添加(1,&#39;天&#39;)