根据传入的日期,得到日期所在的周数(当天所在的一年中的第几周)
今天做项目, 有个需求是根据当前的日期,得到日期所在的这一年的第几周的数值.
在C#或者sql server里面有现成的方法能够获取到. 但是在js里面还没有找到(有点懒,没怎么百度...)
所以索性就直接写一个.
优点么,,没发现.... 就是感觉用到的时候,能方便用吧.
缺点,,就是不支持 跨年的.
以下是代码:
1 function GetWeekByDate(testTime) { 2 3 var arrayMonthDay = null; 4 var nowDate = new Date();//当前日期 5 var nowYear = nowDate.getFullYear();//当前年 6 var nowMonth = 1;//第一月 7 var nowDay = 1;//第一天 8 var week = 1;//第一周 9 10 //根据年是否为闰年,得到 arrayMonthDay的值 11 if ((nowYear % 400 == 0) || (nowYear % 4 == 0) && (nowYear % 100 != 0)) { 12 arrayMonthDay = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 13 } 14 else { 15 arrayMonthDay = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 16 } 17 18 //获取当前年的一月一号 是星期几 19 var time = nowYear + "-" + nowMonth + "-" + nowDay; 20 var weekDay = new Date(time).getDay(); 21 22 23 var bdate = new Date(testTime); //选择的时间 24 var bmonth = bdate.getMonth() + 1; //月 25 var bday = bdate.getDate(); //日期 26 var bweek = 0; 27 while (true) { 28 //如果当前的月份是验证的月份的值,并且当前的天数是验证的日期的值,则结束循环,保存日期 29 if (nowMonth == bmonth && nowDay == bday) { 30 bweek = week; 31 break; 32 } 33 //否则当天++,星期xx 34 nowDay++; 35 weekDay++; 36 37 //如果当天的值>当前月份所对应的的最大天数,则月份+1,日期改为1 38 if (nowDay > arrayMonthDay[nowMonth - 1]) { 39 nowMonth++; 40 nowDay = 1; 41 } 42 43 //如果当前星期大于6,则说明这周已完成,周数+1,星期改为 0 44 if (weekDay > 6) { 45 week++; 46 weekDay = 0; 47 } 48 } 49 var value = bweek ; 50 return value; 51 }
执行效果:
不好的地方,还请各位大侠批评哈.(*^__^*) ...