根据传入的日期,得到日期所在的周数(当天所在的一年中的第几周)

今天做项目, 有个需求是根据当前的日期,得到日期所在的这一年的第几周的数值. 
在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         }

执行效果:

 

不好的地方,还请各位大侠批评哈.(*^__^*) ...

posted @ 2013-08-07 12:44  劝&xue  阅读(2972)  评论(6编辑  收藏  举报