最近因公司业务需求需要实现一个按照每周的日期进行一些业务处理,需要获取每个月有多少周,和每一周的开始日期到结束日期,经过一番思索,终于实现了,现在整理一下,方法如下:
getWeeksWithYearAndMonth(years,month){ var weeks = [];//现将星期数组重制一次 var month2 = parseInt(month)-1; var myDate = new Date(years,month2,1);//获取每个月的第一天是星期几 var firstDay = myDate.getDay(); alert(myDate.getDay()); var myDate2 = new Date(years,month2,0); var days = myDate2.getDate();//获取每个月有多少天 alert(days); var firstMonday = ''; var lastDay = ''; if (firstDay-1==0){ firstMonday = firstDay;//计算当月第一个星期一是几号 lastDay = days;//计算当月减去第一个不完整的星期天,剩余的天数 } else { firstMonday = 7-firstDay+2;//计算当月第一个星期一是几号 lastDay = days-(7-firstDay+1);//计算当月减去第一个不完整的星期天,剩余的天数 } var weeksCount = Math.floor(lastDay/7);//计算当月有几个完整的星期天 alert(weeksCount); var weekth = ''; for (var i=0;i<weeksCount;i++){ weekth = i+1 var week = new Object(); week.label = month+'/'+(firstMonday+7*i)+'----'+month+'/'+((firstMonday+7*i)+7-1)+'(第'+weekth+'周)'; week.value = (i+1).toString(); weeks.push(week); } var shengyuDays = lastDay%7;//计算当月最后一个不完整的星期天有几天 if (shengyuDays>0){//如果一个月的最后一个不完整的星期天天数大于零,则顺延到下一个月 var week = new Object(); var lastMoth = ''; if (parseInt(month)==12){//如果当前月份为12月,则下一个月为1月 lastMoth = '01';//下一年的1月 } else { lastMoth = parseInt(month)+1;//下一个月 } var lastWeekCount = 7-shengyuDays; week.label = month+'/'+(firstMonday+7*weeksCount)+'----'+'0'+lastMoth.toString()+'/'+lastWeekCount+'(第'+(weeksCount+1)+'周)'; week.value = (weeksCount+1).toString(); weeks.push(week); } return weeks; },