JS格式化日期。根據一年中的周,獲取周的日期範圍。
話不多說,直接上碼!!!
(需要JS格式化時間,後期做的時候方便使用) Date.prototype.Format = function(fmt){ //author: meizz var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" : this.getHours(), //小時 "m+" : this.getMinutes(), //分 "s+" : this.getSeconds(), //秒 "q+" : Math.floor((this.getMonth()+3)/3), //季度 "S" : this.getMilliseconds() //毫秒 }; if(/(y+)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); return fmt; };
//通過周取日期範圍 year 年 weeks 周 function weekGetDate(year,weeks){ var date = new Date(year,"0","1"); var time = date.getTime(); // 獲取當前星期幾,0:星期一 var _week = date.getDay(); //當這一年的1月1日為週日時則本年有54周,否則沒有54周,沒有則去除第54周的提示 if(_week!=0){//一年53周情況 if(weeks==54){ return '今年沒有54周'; } var cnt=0;// 獲取距離週末的天數 if(_week==0){ cnt = 7; }else if(_week==1){ cnt = 6; }else if(_week==2){ cnt = 5; }else if(_week==3){ cnt = 4; }else if(_week==4){ cnt = 3; }else if(_week==5){ cnt = 2; }else if(_week==6){ cnt = 1; } cnt += 1;//加1表示以星期一為一週的第一天 // 將這個長整形時間加上第N周的時間偏移 time += cnt*24*3600000; //第2周開始時間 var nextYear = new Date(parseInt(year,10)+1,"0","1"); var nextWeek = nextYear.getDay(); var lastcnt = 0;//獲取最後一週開始時間到週末的天數 if(nextWeek==0){ lastcnt = 6; }else if(nextWeek==1){ lastcnt = 0; }else if(nextWeek==2){ lastcnt = 1; }else if(nextWeek==3){ lastcnt = 2; }else if(nextWeek==4){ lastcnt = 3; }else if(nextWeek==5){ lastcnt = 4; }else if(nextWeek==6){ lastcnt = 5; } if(weeks==1){//第1周特殊處理 // 為日期物件 date 重新設定成時間 time var start = date.Format("yyyy-MM-dd"); date.setTime(time-24*3600000);
return start + "-----" + date; }else if(weeks==53){//第53周特殊處理 var start = time+(weeks-2)*7*24*3600000; //第53周開始時間 var end = time+(weeks-2)*7*24*3600000 + lastcnt*24*3600000 - 24*3600000; //第53周結束時間 date.setTime(start); var _start = date.Format("yyyy-MM-dd"); date.setTime(end); var _end = date.Format("yyyy-MM-dd"); return _start + "---" + _end; }else{ var start = time+(weeks-2)*7*24*3600000; //第n周開始時間 var end = time+(weeks-1)*7*24*3600000 - 24*3600000; //第n周結束時間 date.setTime(start); var _start = date.Format("yyyy-MM-dd"); date.setTime(end); var _end = date.Format("yyyy-MM-dd"); return _start + "---" + _end; } }else{//一年54周情況 var cnt=0;// 獲取距離週末的天數 if(_week==0 && weeks==1){//第一週 cnt = 0; }else if(_week==0){ cnt = 7; }else if(_week==1){ cnt = 6; }else if(_week==2){ cnt = 5; }else if(_week==3){ cnt = 4; }else if(_week==4){ cnt = 3; }else if(_week==5){ cnt = 2; }else if(_week==6){ cnt = 1; } cnt += 1;//加1表示以星期一為一週的第一天 // 將這個長整形時間加上第N周的時間偏移 time += 24*3600000; //第2周開始時間 var nextYear = new Date(parseInt(year,10)+1,"0","1"); var nextWeek = nextYear.getDay(); var lastcnt = 0;//獲取最後一週開始時間到週末的天數 if(nextWeek==0){ lastcnt = 6; }else if(nextWeek==1){ lastcnt = 0; }else if(nextWeek==2){ lastcnt = 1; }else if(nextWeek==3){ lastcnt = 2; }else if(nextWeek==4){ lastcnt = 3; }else if(nextWeek==5){ lastcnt = 4; }else if(nextWeek==6){ lastcnt = 5; } if(weeks==1){//第1周特殊處理 var start = date.Format("yyyy-MM-dd"); date.setTime(time-24*3600000); alert(start +'--'+ date); /return _start + "---" + date; }else if(weeks==54){//第54周特殊處理 var start = time+(weeks-2)*7*24*3600000; //第54周開始時間 var end = time+(weeks-2)*7*24*3600000 + lastcnt*24*3600000 - 24*3600000; //第53周結束時間 date.setTime(start); var _start = date.Format("yyyy-MM-dd"); date.setTime(end); var _end = date.Format("yyyy-MM-dd"); return _start + "---" + _end; }else{ var start = time+(weeks-2)*7*24*3600000; //第n周開始時間 var end = time+(weeks-1)*7*24*3600000 - 24*3600000; //第n周結束時間 date.setTime(start); var _start = date.Format("yyyy-MM-dd"); date.setTime(end); var _end = date.Format("yyyy-MM-dd"); return _start + "---" + _end; } } }