js 实现假期开始日期结束日期 多少天 周六周末节假日不算
时间: 2023-11-27 07:04:34 浏览: 65
js 实现 计算某天星期几
4星 · 用户满意度95%
以下是 JavaScript 实现假期开始日期和结束日期之间相差多少天(周六、周日和法定节假日不算)的代码:
```javascript
// 计算两个日期之间的天数(不包括周六、周日和节假日)
function getDays(startDate, endDate) {
// 节假日数组,需要根据实际情况进行修改
const holidays = [
'2022-01-01',
'2022-01-02',
'2022-01-03',
'2022-02-01',
'2022-02-02',
'2022-02-03',
'2022-02-04',
'2022-02-05',
'2022-02-06',
'2022-02-07',
'2022-04-02',
'2022-04-03',
'2022-04-04',
'2022-04-30',
'2022-05-01',
'2022-05-02',
'2022-06-03',
'2022-06-04',
'2022-06-05',
'2022-09-10',
'2022-09-11',
'2022-09-12',
'2022-10-01',
'2022-10-02',
'2022-10-03',
'2022-10-04',
'2022-10-05',
'2022-10-06',
'2022-10-07',
];
// 将输入的日期字符串转化为 Date 对象
const d1 = new Date(startDate);
const d2 = new Date(endDate);
// 计算两个日期之间相差的天数
const days = (d2 - d1) / (24 * 60 * 60 * 1000) + 1;
// 计算开始日期和结束日期之间的周六、周日和节假日天数
let count = 0;
for (let i = 0; i < days; i++) {
const d = new Date(d1.getTime() + i * 24 * 60 * 60 * 1000);
const dayOfWeek = d.getDay();
const dateString = formatDate(d);
if (dayOfWeek === 0 || dayOfWeek === 6 || holidays.includes(dateString)) {
count++;
}
}
// 返回天数
return days - count;
}
// 格式化日期为字符串
function formatDate(date) {
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
return `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
}
```
上述代码中,`getDays` 函数接受两个日期字符串作为输入参数,然后计算两个日期之间的天数并返回。首先定义了一个节假日数组,其中包含了所有的法定节假日日期,需要根据实际情况进行修改。然后将输入的日期字符串转化为 `Date` 对象,并计算两个日期之间相差的天数。接着遍历开始日期和结束日期之间的所有日期,如果是周六、周日或者节假日,则将计数器加一。最后返回两个日期之间的天数,即总天数减去周六、周日和节假日天数。
注意,上述实现中假设所有的节假日都是不工作的,如果有的节假日需要工作,需要在节假日数组中将其排除。
阅读全文