js 取时间差去掉周六周日实现代码


在JavaScript中,要实现计算两个日期之间的时间差,同时排除周六和周日的代码,可以通过以下步骤来实现:

1. 将两个日期转换为时间戳。

2. 初始化一个计数器用于计算工作日天数。

3. 遍历从起始日期到结束日期的每一天。

4. 检查每一天是否是工作日(非周六、周日)。

5. 如果是工作日,则增加计数器。

以下是具体的实现代码:


function getWorkdayDiff(startDate, endDate) {
    // 将字符串日期转换为Date对象
    let start = new Date(startDate);
    let end = new Date(endDate);
    
    // 初始化工作日计数器
    let workdays = 0;
    
    // 创建一个当前日期变量,从startDate开始
    let currentDate = new Date(start);
    
    // 循环直到当前日期超过endDate
    while (currentDate <= end) {
        // 检查是否为工作日(周一到周五)
        // 注意:getDay()方法返回的是0(周日)- 6(周六)
        if (currentDate.getDay() !== 0 && currentDate.getDay() !== 6) {
            workdays++;
        }
        
        // 将当前日期增加一天
        currentDate.setDate(currentDate.getDate() + 1);
    }
    
    // 返回工作日的总数
    return workdays;
}

// 示例用法
let startDate = "2024-08-06"; // 周一
let endDate = "2024-08-12"; // 周日
console.log(getWorkdayDiff(startDate, endDate)); // 输出应该是4(假设8月6日是周一)

注意:这段代码假设输入的日期字符串格式是 `"YYYY-MM-DD"`,并且`startDate`早于或等于`endDate`。此外,它还假设一周的开始是周日(即`getDay()`返回0代表周日),这通常符合国际标准ISO 8601,但可能因地区而异。如果一周的开始是周一,则代码已经正确实现了这一点。