我正在尝试编写一个代码,其中将计算总天数,不包括周末和自定义假日。我搜索了stackoverflow和adobe论坛以找到解决方案并附带下面的代码。 如果公众假期在一个工作日(周六至周三),则不计算。 我的问题是,如果公共假期在周末(周四至周五)下降,则扣除两个(假日和周末)。假设休假时间为18/09 / 2018-22 / 09/2018,总计数2天显示代替3.再次为17/10 / 2018-21 / 10/2018,总计1天显示代替3天。 任何帮助或任何解决问题的想法都会很棒! 此致
try:
gettimer = bs4.find("div", {'class': "clock"}).attrs['data-code']
// rest of code
except:
pass
答案 0 :(得分:1)
你应该使用一个库而不是重新发明轮子。
但如果您想自己动手,可以使用.getDay
检查公众假期是否在周末。
var weekend = [4, 5], // for Thursday, Friday
holDate, holDay;
for (var i = 0; i < hdayar.length; i++){
holDate = Date.parse(hdayar[i]);
holDay = new Date(holDate).getDay()
if (weekend.indexOf(holDay) == -1 && holDate >= Date.parse(start) && holDate <= Date.parse(end)) {
phdays ++;
}
}
phdays
现在将包含该范围内的非周末公众假期。
答案 1 :(得分:1)
有同样的要求,这就是我的解决方法。希望对其他人有帮助
var holiday = ["4/18/2019", "4/19/2019", "4/20/2019", "4/25/2019", "4/26/2019"];
var startDate = new Date();
var endDate = new Date(startDate.setDate(startDate.getDate() + 1));
for (i = 0; i < holiday.length; i++) {
var date = endDate.getDate();
var month = endDate.getMonth() + 1; //Months are zero based
var year = endDate.getFullYear();
if ((month + '/' + date + '/' + year) === (holiday[i])) {
endDate = new Date(endDate.setDate(endDate.getDate() + 1));
if (endDate.getDay() == 6) {
endDate = new Date(endDate.setDate(endDate.getDate() + 2));
} else if (endDate.getDay() == 0) {
endDate = new Date(endDate.setDate(endDate.getDate() + 1));
}
}
}
在这里,结束日期为您提供下一个工作日。在这里,我忽略了当前日期,并从第二天开始进行比较,无论是假日还是周末。您都可以根据自己的需求(month + '/' + date + '/' + year)
自定义dateTime。比较两个日期。因为它看起来一样,但实际上却不一样。因此请进行相应的自定义。