Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从日期范围计算工作日_Javascript_Date_Momentjs - Fatal编程技术网

Javascript 从日期范围计算工作日

Javascript 从日期范围计算工作日,javascript,date,momentjs,Javascript,Date,Momentjs,给定一系列日期,需要计算天数,不包括给定的节假日和每周的特定天数(每周休息日) 假日将是一个日期数组,但周休假日将只是一个数字,[0,1,2,3,4,5,6],表示一周中的几天 以下是我迄今为止所做的尝试: export const calculateWorkingDays = (startDate, endDate, weeklyOffDays, holidays) => { // Get difference between start and end dates //

给定一系列日期,需要计算天数,不包括给定的节假日和每周的特定天数(每周休息日)

假日将是一个日期数组,但周休假日将只是一个数字,
[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');
}

我还不知道如何从数字表示中获取
每周休息日
日期,以及如何减去给定的天数(每周休息日和假期)从日期范围,然后获取剩余天数计数。

您可以从
开始日期
循环到
结束日期
,并检查每一项的日期是否包含在
每周工作日
中,或者日期是否包含在
假日
数组中

这里是一个实时示例,假设
weeklyOffDays
为整数数组,而
holidays
为ISO 8601字符串数组

const calculateworkdays=(开始日期、结束日期、每周工作日、假日)=>{
让计数=0;
常数开始=力矩(开始日期);
常数结束=力矩(结束日期);
while(start.isBefore(end)){
如果(!weeklyOffDays.includes(start.day())&&!holidays.includes(start.format('YYYY-MM-DD')){
计数++;
}
开始。添加(1,'天');
}
返回计数;
}
const res=计算工作日('2018-07-01','2018-07-15',[5,6','2018-07-04']);
控制台日志(res)

假日将是一组日期
那么假日的每一天都将在那里?像
[May1,May2,May3]
?@JonasW.,yes for holidays是一个数组,包含与您指定的日期类似的日期