2009年7月8日 星期三

JavaScript 民國年日期加減函數

 User提了一個需求,



 當輸入一個日期時,



 自動算出輸入的日期  加一年減一日



 於是google了一下找到一個可用的程式,



但是裡面有些bug,



程式中月份沒先減再加,以致於天數的加減會算錯,



以下是修正為民國年並拿掉不會用到的功能。



------------------------------------------------------------



 加365日

 alert(addDate(4,365,'0960301'));

 →顯示 0970229




 加一年 減一日

 addDate(4,-1,addDate(1,1,'1000301'));

 →顯示 1000229




function addDate(type,NumDay,dtDate){

  var date = new Date();

  type = parseInt(type); //類型

  lIntval = parseInt(NumDay);//間隔

  date.setYear(parseInt(dtDate.substr(0,3),10) + 1911); //年設定

  date.setMonth(parseInt(dtDate.substr(3,2)-1,10) ); //月設定

  date.setDate(parseInt(dtDate.substr(5,2),10)); //日設定


  switch(type){

     case 1 ://年

        date.setYear(date.getYear() + lIntval)

        break;

     case 2 ://季度

        date.setMonth(date.getMonth() + (lIntval * 4) )

        break;

     case 3 ://月

        date.setMonth(date.getMonth() + lIntval)

        break;

     case 4 ://天

        date.setDate(date.getDate() + lIntval)

        break;

     default:

    }

 

   return  LPad(""+parseInt(date.getYear()-1911),"0",3) +'' +  LPad(""+parseInt(date.getMonth()+1),"0",2) + '' +  LPad(""+parseInt(date.getDate()),"0",2);

 }




//向左補零

function LPad(str,sub,len)

{

   var str1=str;

   while(1)

   {

      var i=str1.length;

   if (i>=len)

   {

   break;

   }

   else

   {

         str1=sub+str1;

      }

   }

   return str1;

}


 




原始版:http://www.souzz.net/big5.php?/html/web/web1/528.html