鉴于日期范围,需要计算天数,其中不包括指定的假期和每周(每周的下班日)某些天。
假期将是array
个日期,但是每周的休假时间将是一个数字[0, 1, 2, 3, 4, 5, 6]
,代表一周中的几天。
以下是我到目前为止尝试过的内容:
export const calculateWorkingDays = (startDate, endDate, weeklyOffDays, holidays) => {
// Get difference between start and end dates
// Not used other parameters yet
return startDate.diff(endDate, 'days');
}
我还不知道如何从数字表示中获取weekly off days
日期,以及如何从日期范围中减去给定的天数(每周休息日和节假日),然后获得剩余天数。
答案 0 :(得分:1)
您可以从startDate
循环到endDate
,并检查每个项目是weeklyOffDays
中包含星期几还是holidays
中包含星期几数组。
这里有一个实时示例,假设weeklyOffDays
是整数数组,而holidays
是ISO 8601字符串数组。
const calculateWorkingDays = (startDate, endDate, weeklyOffDays, holidays) => {
let count = 0;
const start = moment(startDate);
const end = moment(endDate);
while( start.isBefore(end) ){
if( !weeklyOffDays.includes(start.day()) && !holidays.includes(start.format('YYYY-MM-DD'))){
count++;
}
start.add(1, 'day');
}
return count;
}
const res = calculateWorkingDays('2018-07-01', '2018-07-15', [5, 6], ['2018-07-04']);
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>