步骤如下:
1.计算开始日期是星期几
2.算出二个日期间的天数days
3.days/7为星期一~星期日的原始数
4.days%7例:5/4是星期日,到5/31各有多少个星期一~星期日
days=5/30-5/4+1=27;//相隔27天
weeks=27/7=3;//3个星期一到星期日
day=27%7=6;//星期日、星期一、星期二、星期三、星期四、星期五6天(5/4是星期日,从这天开始算)
故:星期日、一、二、三、四、五有3+1=4天;星期六有3天

解决方案 »

  1.   


    /**
    *计算二个日期间有几个星期一到星期日
     *date_sta及date_end需是Date型参数
    */
    function getWeekDays(date_sta,date_end){
        if(!(date_sta instanceof Date)||!(date_end instanceof Date)){
            throw new TypeError("传入参数必须是Date类型");
        }
        if(date_sta>date_end){//date_sta必须比date_end小
           var temp=date_sta;
            date_sta=date_end;
            date_end=temp;
        }
        var days=(date_end-date_sta)/1000/60/60/24+1;//二个日期相关得到毫毛数
        var sta_week_day=date_sta.getDay();//返回星期几(星期日为0,星期一为1...星期六为6
        var weeks=Math.floor(days/7);
        var day=days%7;
        var weekday=[];
        weekday[0]=weekday[1]=weekday[2]=weekday[3]=weekday[4]=weekday[5]=weekday[6]=weeks;
        for(var i=0;i<day;i++){
            var n=(sta_week_day+i)%7;
            weekday[n]++;
        }
        return {
            Sun:weekday[0],
            Mon:weekday[1],
            Tues:weekday[2],
            Wed:weekday[3],
            Thur:weekday[4],
            Fri:weekday[5],
            Sat:weekday[6]
        };
    }
    调用示例:getWeekDays(new Date("2014/5/4"),new Date("2014/5/30"));
    结果:{Fri: 4,Mon: 4,Sat: 3,Sun: 4,Thur: 4,Tues: 4,Wed: 4}
      

  2.   

    我还是觉得一天天循环比较好    function getWeek(sta,end){
            var a = new Date(sta.replace(/-/g,'/')),b = new Date(end.replace(/-/g,'/')), y, m, d,w=[0,0,0,0,0,0,0];
            while(a<=b){
                w[a.getDay()]++;
                a.setDate(a.getDate()+1);//第二天
            }
            return {"日":w[0],"一":w[1],"二":w[2],"三":w[3],"四":w[4],"五":w[5],"六":w[6]}
        }
        console.log(getWeek("2014-5-4","2014-5-10"));