1. 程式人生 > >JS格式化日期。根據一年中的周,獲取周的日期範圍。

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;         }         }     }