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