今天做項目, 有個需求是根據當前的日期,得到日期所在的這一年的第幾周的數值.
在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 }
執行效果:
不好的地方,還請各位大俠批評哈.(*^__^*) ...