返回指定月份的周列表 包含 周序号、开始日期、结束日期(不包含周末)

    /**
     * 返回当前年月的周列表 包含 周序号、开始日期、结束日期(不包含周末)
     * @param year          年
     * @param month  月
     * @returns {Array} 
     */
    function getYearMonthWeekList(year,month) {
            var weekList=[];
            var time = year + "/" + month + "/01";//取当前月的第一天
            var d= new Date(time)
            var dayfitst = parseInt(d.getDay());//得到这个月的第一天是星期几  0(周日) 到 6(周六) 
            var weekDate;//当前月的第一周的第一天  遇到跨月时 则选择上个月的最后一周的第一天
            if(dayfitst>1){//当前月第一天不是星期一 则往前退回至星期一
                    m=d.getMonth();
                    for(i=7;i>0;i--){
                            if(d.getDay()==1) {//退回到第一个星期一取出当前日期做为本月份的第一周的开始日期
                                    weekDate=d;
                                    break;
                            }
                            d.setDate(d.getDate()-1);
                    }    
            }else{
                    weekDate=d;
            }
            var weekStr="";
            for(i=0;;i++){
                    var weekObj={}
                    weekObj.no=i+1;
                
                    //开始日期
                    weekObj.startDate=weekDate.getTime();
                    weekStr=weekStr+weekDate.toLocaleDateString()+"~";
                    //结束日期
                    weekDate.setDate(weekDate.getDate()+4);
                    weekObj.endDate=weekDate.getTime();
                    weekObj.showTxt="第"+(i+1)+"周("+new Date(weekObj.startDate).toLocaleDateString()+"~"+new Date(weekObj.endDate).toLocaleDateString()+")";//周序号
                    weekList.push(weekObj);
                    //过滤周末
                    weekStr=weekStr+weekDate.toLocaleDateString()+"\r\n";
                    weekDate.setDate(weekDate.getDate()+3);
                    if(weekDate.getFullYear()>year||weekDate.getMonth()+1>month){//跨至下年或下月停止循环
                            break;
                    }
            }
            return weekList;
        }

 

posted @ 2016-07-26 18:22  委员长  阅读(646)  评论(0编辑  收藏  举报