日期:2014-05-17  浏览次数:20414 次

JS中如何统计两个日期之间的天数,如果其中包含星期六,星期日的话,要将其去除
如题。JS中如何统计两个日期之间的天数,如果其中包含星期六,星期日的话,要将其去除  。
请假系统中,周六周日是不能计算进去的。
网上的如下方法是错误的。
function cal(){
    var d1 = $("date1").value.split("-");
    var d2 = $("date2").value.split("-");
    
    var date1 = new Date(d1[0], d1[1]-1, d1[2]);
    var date2 = new Date(d2[0], d2[1]-1, d2[2]);
    
    var day = (date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24);
    
    var w1 = date1.getDay();
    var w2 = date2.getDay();
    
    var w = parseInt(day / 7) * 2;
    w += w1 > w2 ? 2 : w1 == 0 ? 1 : 0;
    
    $("result").value = day - w + 1;
}

------解决方案--------------------
我的方法有点笨啊:

computeWorkingDays = function(startDate, endDate){
    var base = 1000 * 60 * 60 * 24;
    var workingDays = 0;
    while (endDate.getTime() - startDate.getTime() > 0){
        if(startDate.getDay() != 6 && startDate.getDay() != 0) {
            workingDays ++;
        }
        startDate = new Date(startDate.getTime() + base);
    }
    return workingDays;
}