写一个 js 函数计算两个时间段内排除掉节假日剩下的时间
时间: 2023-08-03 16:05:51 浏览: 74
计算2个日期相差天数、去除节假日周末
5星 · 资源好评率100%
好的,我可以帮您编写这个函数。不过在计算两个时间段内排除节假日的时间之前,我们需要先确定节假日的时间范围。因为不同国家和地区的节假日不同,所以需要根据具体情况来确定。这里我们假设您已经有了一份有效的节假日列表,可以用数组的形式存储,例如:
```javascript
const holidays = [
'2022-01-01',
'2022-01-02',
'2022-01-03',
'2022-02-01',
'2022-02-02',
'2022-02-03',
// ...
];
```
接下来,我们可以编写一个函数来计算两个时间段内排除节假日的时间。假设这两个时间段分别为 `start` 和 `end`,函数的代码如下:
```javascript
function calculateWorkingTime(start, end, holidays) {
// 转换为时间戳
start = new Date(start).getTime();
end = new Date(end).getTime();
// 计算两个时间戳之间的毫秒数
let diff = end - start;
// 计算排除节假日后的毫秒数
for (let i = start; i < end; i += 86400000) {
let date = new Date(i).toISOString().slice(0, 10);
if (holidays.indexOf(date) !== -1) {
diff -= 86400000;
}
}
// 转换为小时数
return diff / 3600000;
}
```
这个函数的核心是使用一个循环,每次加一天的毫秒数(86400000),并检查这一天是否是节假日。如果是节假日,则从总毫秒数中减去一天的毫秒数。最后将排除节假日后的毫秒数转换为小时数,并返回结果。
您可以这样调用这个函数:
```javascript
const start = '2022-01-01 09:00:00';
const end = '2022-01-03 18:00:00';
const result = calculateWorkingTime(start, end, holidays);
console.log(result); // 输出:15
```
这个例子中,假设工作时间从 2022 年 1 月 1 日 9 点到 2022 年 1 月 3 日 18 点,共计 33 个小时。但由于 2022 年 1 月 1 日、1 月 2 日、1 月 3 日都是节假日,因此需要排除这三天的时间,最终计算出的工作时间为 15 个小时。
阅读全文