<html>
<head>
<script language='javascript'>
///////////////////////////////基础小处理函数
function cekleap(input)//判断闰年
{
if(typeof(input)=="string")
{var y=input.substring(0,4);}
else
{var y=input}
if(y%4!=0)
{return false;}
else
{
if((y%100!=0)||(y%400==0)){return true;}
else{return false;}
}
}
function calMMDD(indays,leap)//知道天数算日期且indays<=(365or366);leap为真为闰年,为假为平年
{
var a1=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var a2=new Array(31,29,31,30,31,30,31,31,30,31,30,31);
var inN=indays;
var inL=leap;
switch(inL)
{
case true:{var aa=a2;break;}
case false:{var aa=a1;break;}
default:{break;}
}
var outO=new Object();
for(var i=0;i<12;i++)
{
if(inN<=aa[i])
{
outO.mm=i+1;
outO.dd=inN;
break;
}
else
{inN-=aa[i];}
}
return(outO);
}
function convertion(yy,mm,dd)//整理输出
{
switch(mm<10)
{
case true:{mm="0"+mm;break;}
default:{break;}
}
switch(dd<10)
{
case true:{dd="0"+dd;break;}
default:{break;}
}
var outS=yy+"-"+mm+"-"+dd;//格式可更改
return(outS);
}
///////////////////////////////算以后的日期
function addday(inputS,inputN) //inputS 的格式 yyyy-mm-dd
{
// alert("l12");
var outS="";
var dis=inputN-0;//先处理下 转成数字
var yy=inputS.substring(0,4)-0;
var mm=inputS.substring(5,7)-0;
var dd=inputS.substring(8,10)-0;
//alert(yy);
//alert(mm);
//alert(dd);
var a1=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var a2=new Array(31,29,31,30,31,30,31,31,30,31,30,31);
if(!cekleap(yy))
{
var aa=a1;
}
else
{
var aa=a2;
}
var tt=aa[mm-1]-dd; //本月剩下的天数
//alert(aa[mm-1]);
if(dis<=tt) //先处理本月
{
dd+=dis;
outS=convertion(yy,mm,dd);
return(outS);
}
else
{
mm+=1;
dis-=tt;
}
if(mm==13)//是否跨年
{
yy+=1;
mm=1;
if(!cekleap(yy))
{
aa=a1;
}
else
{
aa=a2;
}
}
for(var i=(mm-1);i<=11;i++) //接着后面处理
{
switch (i)
{
case 11: //判断是否为12月
{
// alert("laa");
if(dis<=aa[i])
{
outS=convertion(yy,(i+1),dis);
return(outS);
}
else
{
dis-=aa[i];
yy+=1;
if(!cekleap(yy))
{
aa=a1;
}
else
{
aa=a2;
}
i=-1; //跨年
}
break;
}
default:
{
// alert("l7");
if(dis<=aa[i])
{
outS=outS=convertion(yy,(i+1),dis);
// alert(outS);
return(outS);
}
else
{
dis-=aa[i];
}
break;
}
}
}
//alert("l10");
}
///////////////////////////////算以前的日期
function subtractday(inputS,inputN) //inputS 的格式 yyyy-mm-dd
{
var outS="";
var dis=inputN-0;
var yy=inputS.substring(0,4)-0;
var mm=inputS.substring(5,7)-0;
var dd=inputS.substring(8,10)-0;
var a1=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var a2=new Array(31,29,31,30,31,30,31,31,30,31,30,31);
if(!cekleap(yy))
{
var aa=a1;
}
else
{
var aa=a2;
}
if(dis<dd) //先处理本月
{
outS=convertion(yy,mm,(dd-dis));
return(outS);
}
else
{mm-=1;
dis-=dd;}
if(mm==0)//看是否跨年
{
yy-=1;
mm=12;
if(!cekleap(yy))
{
aa=a1;
}
else
{
aa=a2;
}
}
for(var i=(mm-1);i>=0;i--) //接着后面处理
{
switch (i)
{
case 0: //判断是否为1月
{
if(dis<aa[i])
{
outS=convertion(yy,(i+1),(aa[i]-dis));
return(outS);
}
else
{
dis-=aa[i];
yy-=1;
if(!cekleap(yy))
{
aa=a1;
}
else
{
aa=a2;
}
i=12; //跨年
}
break;
}
default:
{
if(dis<aa[i])
{
outS=convertion(yy,(i+1),(aa[i]-dis));
return(outS);
}
else
{
dis-=aa[i];
}
break;
}
}
}
}
////////////////////////////////////间隔输入可正可负
function multiuseday(inputS,inputN) //inputS的格式 yyyy-mm-dd inputN为天数(可正可负) 估算结果时间不能早于1970.01.01或者超过2100年
{
var outS;
var indate=new Date(inputS.substring(0,4),(inputS.substring(5,7)-1),inputS.substring(8,10)); //起点时间
var Stime=new Date(1970,00,01);//标准时间 //注意:用 new Date 月份是从0开始的
var Tdis=indate-Stime+24*60*60*1000;//因为从1号开始 所以要加一天
var oneday=24*60*60*1000;
//alert("x1");
//alert(Tdis/oneday);
//alert("xX1");
//alert(indate/oneday);
var dis=(inputN-0)*24*60*60*1000;//换成毫秒
//alert("x11");
//alert(dis/oneday);
if(dis==0){return(inputS);}
dis=(Tdis+dis)/oneday;
//alert("x111");
//alert(dis);
var normalyear=365;
var leapyear=366;
var Ydis=0;//年间隔
var Ddis=0;//天间隔
var mmdd=new Object();//月份日号对象
if(dis<=normalyear)//1970年
{
Ddis+=dis;
mmdd=calMMDD(Ddis,false);
outS=convertion((1970+Ydis),mmdd.mm,mmdd.dd);////
return(outS);
}
if(dis<=(normalyear*2))//1971年
{
Ydis=1;
Ddis+=(dis-365);
mmdd=calMMDD(Ddis,false);
outS=convertion((1970+Ydis),mmdd.mm,mmdd.dd);////
return(outS);
}
//alert("x1111");
//alert(Ddis);
dis-=(normalyear*2);
//alert("bbb1");
//alert(dis);
//4年周期处理 从1972闰年开始
Ydis=Math.floor(dis/(leapyear+normalyear*3));//注意处理小数部分
Ydis=2+Ydis*4;//年的间隔
Ddis=Ddis+dis%(leapyear+normalyear*3); //落在一个周期内的天数
//alert("x11111");
//alert(Ddis);
if(Ddis==0)//正好落在周期的最后1天 特殊处理
{Ydis-=4;Ddis=1461;}
if(Ddis<=731) //做周期内判断 1闰3平
{
if(Ddis<=366)
{
mmdd=calMMDD(Ddis,true);
}
else
{
Ydis+=1;
Ddis-=366;
mmdd=calMMDD(Ddis,false);
}
}
else
{
if(Ddis<=1096)
{
Ydis+=2;
Ddis-=731;
mmdd=calMMDD(Ddis,false);
}
else
{
Ydis+=3;
Ddis-=1096;
mmdd=calMMDD(Ddis,false);
}
}
outS=convertion((1970+Ydis),mmdd.mm,mmdd.dd);////
return(outS);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function clka()
{
var mes=cekleap("2008");
alert(mes);
}
function add()
{
var obj01=document.getElementById("txt01");
var obj02=document.getElementById("txt02");
var obj03=document.getElementById("txt03");
obj03.value=addday(obj01.value,obj02.value);
}
function subtract()
{
var obj04=document.getElementById("txt04");
var obj05=document.getElementById("txt05");
var obj06=document.getElementById("txt06");
obj06.value=subtractday(obj04.value,obj05.value);
}
function multiuse()
{
var obj07=document.getElementById("txt07");
var obj08=document.getElementById("txt08");
var obj09=document.getElementById("txt09");
obj09.value=multiuseday(obj07.value,obj08.value);
}
</script>
</head>
<body>
<input type='text' id='txt01' name='txt01' size='20'> +
<input type='text' id='txt02' name='txt02' size='20'> =
<input type='text' id='txt03' name='txt03' size='20'> ADD控制
<br><br>
<input type='text' id='txt04' name='txt01' size='20'> -
<input type='text' id='txt05' name='txt02' size='20'> =
<input type='text' id='txt06' name='txt02' size='20'> SUB控制
<br><br>
<input type='text' id='txt07' name='txt07' size='20'>
<input type='text' id='txt08' name='txt08' size='20'>
<input type='text' id='txt09' name='txt09' size='20'> MULUSE控制
<br><br>
<input type='button' id='btn01' name='btn01' value='检 测' >
<input type='button' id='btn02' name='btn02' value='L E A P' onClick='clka();'>
<input type='button' id='btn03' name='btn03' value='A D D' onClick='add();'>
<input type='button' id='btn04' name='btn04' value='S U B' onClick='subtract();'>
<input type='button' id='btn05' name='btn05' value='M U L' onClick='multiuse();'>
</body>
</html>
上面的代码经过本人的基本功能测试 还勉强可以对付下 呵呵