js实现年选周

Date.prototype.getWeek   =   function(flag)  
   {  
       var   first   =   new   Date(this.getFullYear(),   0,   1);  
       var   n   =   parseInt("1065432".charAt(first.getDay()));  
       n   =   this.getTime()-first.getTime()-n*24*60*60*1000;  
       n   =   Math.ceil(n/(7*24*60*60*1000));  
       return   (flag==true&&first.getDay()!=1)?(n+1):n;  
   };
   function getFirstDate(year){
   var   first   =   new   Date(year,   0,   1);
   return first;
   }
   function getLastDate(year){
   var   last   =   new   Date(year,   11,   31);
   return last;
   }
   Date.prototype.format   =   function(format)  
   {  
       var   o   =   {  
           "M+"   :   this.getMonth()+1,   //month  
           "d+"   :   this.getDate(),         //day  
           "h+"   :   this.getHours(),       //hour  
           "m+"   :   this.getMinutes(),   //minute  
           "s+"   :   this.getSeconds(),   // cond  
           "q+"   :   Math.floor((this.getMonth()+3)/3),     //quarter  
           "S"   :   this.getMilliseconds()   //millisecond  
       }  
       if(/(y+)/.test(format))   format=format.replace(RegExp.$1,  
           (this.getFullYear()+"").substr(4   -   RegExp.$1.length));  
       for(var   k   in   o)if(new   RegExp("("+   k   +")").test(format))  
           format   =   format.replace(RegExp.$1,  
               RegExp.$1.length==1   ?   o[k]   :    
                   ("00"+   o[k]).substr((""+   o[k]).length));  
       return   format;  
   };  
   function   getFirstAndEnd(d)  
   {  
       var   w   =   d.getDay(),   n   =   24*60*60*1000;  
       var   first   =   new   Date(d.getTime()   -   parseInt("6012345".charAt(w))*n);  
       var   end   =   new   Date(d.getTime()   +   parseInt("0654321".charAt(w))*n);  
       return   {first:   first,   end:   end};  
   }  
  function addWeekOption(con,year){
  var weekCount = getLastDate(year).getWeek(false)+1;
  var   firstAndEnd   =   getFirstAndEnd(getFirstDate(year));
  con.add(new Option('请选择',''));
  for(var i=0;i<weekCount;i++){
   var index = i+1;
   var str = frmWithZero(index);
   var value='第'+str+'周('+firstAndEnd.first.format("yyyy-MM-dd")+'到'+firstAndEnd.end.format("yyyy-MM-dd")+')';
   con.add(new Option(value,str));
   var n   =   24*60*60*1000; 
   var newDate = new Date(firstAndEnd.end.getTime()+n);
   firstAndEnd   =   getFirstAndEnd(newDate); 
  }
  }
  function frmWithZero(num){  
   if( num<10)  
   return   "0"+num;  
   else   return   num;  
  }  
 function addOption(con,year,type){
  var value = con.value;
  removeAll(con);
  if(year==''){
   return;
  }
  
     if(type==2){
   con.add(new Option('请选择',''));
   con.add(new Option('第一季度','01'));
   con.add(new Option('第二季度','02'));
   con.add(new Option('第三季度','03'));
   con.add(new Option('第四季度','04'));
   con.value=value;
   con.id='combobox';//允许为空
  }else if(type==3){
   con.add(new Option('请选择',''));
   con.add(new Option('一月','01'));
   con.add(new Option('一月','01'));
   con.add(new Option('二月','02'));
   con.add(new Option('三月','03'));
   con.add(new Option('四月','04'));
   con.add(new Option('五月','05'));
   con.add(new Option('六月','06'));
   con.add(new Option('七月','07'));
   con.add(new Option('八月','08'));
   con.add(new Option('九月','09'));
   con.add(new Option('十月','10'));
   con.add(new Option('十一月','11'));
   con.add(new Option('十二月','12'));
   con.value=value;
   con.id='combobox';//允许为空
  }else if(type==4){
   addWeekOption(con,year);
   con.value=value;
   
   con.id='combobox';//允许为空
  }else{
   con.disabled=true;
  }
    }
  function removeAll(sel){
    for(i=0;i<sel.length;i++)
    {
     sel.options.remove(i);
     i--;
    }
  }
  function initValues_post(){
   initvalue();
  addOption(document.tableForm.week,document.tableForm.year.value,4);
 }
 initValues_post(); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值