[原创]JS端计算一段时间内工作日的天数,排除周末和法定节假日,同时考虑到调休日...
时间: 2024-03-15 09:45:11 浏览: 11
首先,需要定义一个数组,存储法定节假日的日期。然后,可以使用JavaScript中的Date对象和相关方法来计算工作日天数。
以下是一个示例代码:
```javascript
function getWorkDays(startDate, endDate) {
// 定义法定节假日数组
const holidays = [
// 2021年法定节假日
'2021-01-01', // 元旦
'2021-02-11', // 春节
'2021-02-12', // 春节
'2021-02-13', // 春节
'2021-02-14', // 春节
'2021-02-15', // 春节
'2021-02-16', // 春节
'2021-04-05', // 清明节
'2021-05-01', // 劳动节
'2021-05-02', // 劳动节
'2021-05-03', // 劳动节
'2021-05-04', // 劳动节
'2021-06-14', // 端午节
'2021-09-20', // 中秋节
'2021-10-01', // 国庆节
'2021-10-02', // 国庆节
'2021-10-03', // 国庆节
'2021-10-04', // 国庆节
'2021-10-05', // 国庆节
'2021-10-06', // 国庆节
'2021-10-07' // 国庆节
];
// 计算相差天数
const days = (endDate - startDate) / (1000 * 60 * 60 * 24);
// 初始化工作日天数
let workDays = 0;
for (let i = 0; i <= days; i++) {
const date = new Date(startDate.getTime() + i * 24 * 60 * 60 * 1000);
// 排除周末和法定节假日
if (date.getDay() !== 0 && date.getDay() !== 6 && !holidays.includes(date.toLocaleDateString())) {
workDays++;
}
}
return workDays;
}
// 测试代码
const startDate = new Date('2021-05-01');
const endDate = new Date('2021-05-10');
console.log(getWorkDays(startDate, endDate)); // 输出 5
```
在上面的代码中,首先定义了一个`holidays`数组,存储了2021年的法定节假日。然后,使用Date对象的相关方法计算相差天数,并使用循环遍历每一天的日期,判断是否为周末或法定节假日,最后累加工作日天数并返回。