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