我是一个网络编程的初学者,现在我想得到两个日期之间的天数,不包括周末和我国每年的公共假日。我想得到一个我自己特定年份的假日列表。比如我通过了2021年,那么它会返回2021年的所有假日,类似地,如果我通过了2022年,那么它会返回2022年。
通过使用JavaScript,我计算了两个日期(不包括周末)之间的差异。
下面的代码描述两个日期之间的差异(不包括周末)。
function getBusinessDateCount (startDate, endDate) {
var elapsed, daysBeforeFirstSaturday, daysAfterLastSunday;
var ifThen = function (a, b, c) {
return a == b ? c : a;
};
elapsed = endDate - startDate; elapsed /= 86400000;
daysBeforeFirstSunday = (7 - startDate.getDay()) % 7; daysAfterLastSunday = endDate.getDay();
elapsed -= (daysBeforeFirstSunday + daysAfterLastSunday);
elapsed = (elapsed / 7) * 5;
elapsed += ifThen(daysBeforeFirstSunday - 1, -1, 0) + ifThen(daysAfterLastSunday, 6, 5);
return Math.ceil(elapsed); }
$(document).ready(function(){
$(document).on('change','#date2',function (evt) {
let start = document.querySelector('#date1').value,
end = document.querySelector('#date2').value,
result = getBusinessDateCount(new Date(start),
new Date(end));
document.getElementById("days").value = result+ " Jours";
}); });
现在,我陷入了如何添加我国每年的公共假日,并得到两个日期之间的数字,不包括周末和公共假日。
如果你有什么想法,请帮助
1条答案
按热度按时间6ljaweal1#
您有date1和date2。date1在year1中,date2在year2中。
第二年〉=第一年
即使有可能有些节日不是每年都庆祝的,或者,它们是在你的两个约会之间引入的,为了简单起见,我将假设任何节日都是每年庆祝的。
所以,假设每年有n个节日,你也知道
第1年〈y〈第2年
年,有n个假期。因此:
现在,您需要循环您的假期,并将它们的月份和日期与
date1
和date2
的月份和日期进行比较,因此,如果它们晚于date1
,则将它们相加,如果它们早于date2
,则将它们相加(如果两个条件都满足,则将它们相加两次):现在,让我们关注周末,幸运的是这部分已经在SO at How to determine number Saturdays and Sundays comes between two dates in java script解决了
在
countWeekendDays
到holidays
的结果,这应该可以解决问题。