如何在Angular/Javascript中排除假日日期

如何在Angular/Javascript中排除假日日期,javascript,jquery,angularjs,angular,Javascript,Jquery,Angularjs,Angular,我还没有找到解决这个问题的办法。请注意,我写了这段代码是为了计算休假期间工作时间之间的差异,我还记录了午餐时间和周末。然而,我想延长它以适应假期。例如,如果数组中的日期['2020-07-15','2020-07-16',2020-07-17']是假日。请问,如何根据数组中传递的日期排除这些假日。谢谢 onChangeDate(){ var minutesWorked = 0; var startDate = new Date(this.leaveList.date_from); var end

我还没有找到解决这个问题的办法。请注意,我写了这段代码是为了计算休假期间工作时间之间的差异,我还记录了午餐时间和周末。然而,我想延长它以适应假期。例如,如果数组中的日期['2020-07-15','2020-07-16',2020-07-17']是假日。请问,如何根据数组中传递的日期排除这些假日。谢谢

onChangeDate(){
var minutesWorked = 0;
var startDate = new Date(this.leaveList.date_from);
var endDate = new Date(this.leaveList.date_to);
var holidays = [ new Date (2020, 6, 27), new Date(2020, 6, 28 )]
if(endDate < startDate){
    return 0;
}
var current  = startDate
// Define work range
var workHoursStart = 8.30;
var workHoursEnd = 18;
var excludeWeekends = true;
var excludeLunch = true;
// Loop while currentDate is less than end Date (by minutes)
while(current <= endDate){   
       
    if(current.getHours() >= workHoursStart && current.getHours() < workHoursEnd && (excludeWeekends ? current.getDay() !== 0 && current.getDay() !== 6 : true)
    &&(excludeLunch ? current.getHours() !== 12 && current.getHours() !==13.30: true)){
        
          minutesWorked++;
    }
    current.setTime(current.getTime() + 1000 * 60);
}
this.leaveList.hours = Math.floor(minutesWorked / 60);
}
onChangeDate(){
var minutesWorked=0;
var startDate=新日期(this.leaveList.Date\u from);
var endDate=新日期(this.leaveList.Date_to);
var假日=[新日期(2020,6,27),新日期(2020,6,28)]
如果(结束日期<开始日期){
返回0;
}
无功电流=起始日期
//定义工作范围
var工时开始=8.30;
var workHoursEnd=18;
var exclude=true;
var excludefunch=true;
//currentDate小于结束日期时循环(以分钟为单位)
而(当前=工作时间开始和当前.getHours()
您应该尝试另一种方法,这种方法不仅可以节省迭代次数,而且可以提供有效的解决方案

  • 查找每天的小时数(调整午餐时间)
  • 查找天数(调整周末天数)
  • 函数onChangeDate(){
    var minutesWorked=0;
    var startDate=新日期(this.leaveList.Date\u from);
    var endDate=新日期(this.leaveList.Date_to);
    var假日=[新日期(2020,6,27),新日期(2020,6,28)];
    假日=假日.map(函数(holidayDate){
    返回holidayDate.toDateString();
    })
    如果(结束日期<开始日期){
    返回0;
    }
    无功电流=起始日期
    //定义工作范围
    var workHoursStart=8.5;
    var workHoursEnd=18;
    var exclude=true;
    var excludefunch=true;
    var lunchTime=1.5;//只定义午餐的小时数
    var hoursPerDay=工时结束-工时开始;
    如果(不包括午餐){
    hoursPerDay=hoursPerDay-午餐时间;
    }
    var noOfDays=0;
    while(当前为0))
    &&假日.indexOf(currentDateValue)=-1){
    中午++;
    }
    current.setDate(current.getDate()+1);
    }
    var小时=小时/天*中午;
    this.leaveList.hours=小时;
    
    }
    您应该尝试另一种方法,这种方法不仅可以节省迭代次数,而且可以提供有效的解决方案

  • 查找每天的小时数(调整午餐时间)
  • 查找天数(调整周末天数)
  • 函数onChangeDate(){
    var minutesWorked=0;
    var startDate=新日期(this.leaveList.Date\u from);
    var endDate=新日期(this.leaveList.Date_to);
    var假日=[新日期(2020,6,27),新日期(2020,6,28)];
    假日=假日.map(函数(holidayDate){
    返回holidayDate.toDateString();
    })
    如果(结束日期<开始日期){
    返回0;
    }
    无功电流=起始日期
    //定义工作范围
    var workHoursStart=8.5;
    var workHoursEnd=18;
    var exclude=true;
    var excludefunch=true;
    var lunchTime=1.5;//只定义午餐的小时数
    var hoursPerDay=工时结束-工时开始;
    如果(不包括午餐){
    hoursPerDay=hoursPerDay-午餐时间;
    }
    var noOfDays=0;
    while(当前为0))
    &&假日.indexOf(currentDateValue)=-1){
    中午++;
    }
    current.setDate(current.getDate()+1);
    }
    var小时=小时/天*中午;
    this.leaveList.hours=小时;
    }