function addDate(date,days){
var d=new Date(date)
d.setDate(d.getDate()+days)
var m=d.getMonth()+1
return d.getFullYear()+'-'+m+'-'+d.getDate()
}
其中,date参数是要进行加减的日期,days参数是要加减的天数,如果往前算就传入负数,往后算就传入正数,如果是要进行月份的加减,就调用setMonth()和getMonth()就可以了,需要注意的是返回的月份是从0开始计算的,也就是说返回的月份要比实际月份少一个月,因此要相应的加上1。
var today=new Date()// 获取今天时间today.setDate(today.getDate() + 7)// 系统会自动转换
下面是date类提供的三个你可能生成字符串用到的函数:
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
用Javascript实现(经测试答案正确):<html>
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=uft-8">
<script language="javascript">
function window_onload()
{
var LSTR_Date = "20090115"
//(日期表示只有这一种格式,不支持民国年)
var LSTR_AddDays =45
var LSTR_DateType = "YYYYMMDD"
alert(AddDate(LSTR_Date,LSTR_AddDays,LSTR_DateType))
}
function AddDate(LISTR_Date,LISTR_AddDays,LISTR_DateType)
{
var LSTR_YY=0
var LSTR_MM=0
var LSTR_DD=0
var LINT_FLAG=0
//检查日期格式为 "YYYYMMDD" 或
//"MMDDYYYY" 且长度为8码
if((LISTR_DateType!="YYYYMMDD") &&(LISTR_DateType!="MMDDYYYY") &&(LISTR_Date.length!=8))
return false
if(LISTR_DateType=="MMDDYYYY")
LISTR_Date=LISTR_Date.substr(4,4)+LISTR_Date.substr(0,4)
LSTR_YY=parseInt(LISTR_Date.substr(0,4),10)
LSTR_MM=parseInt(LISTR_Date.substr(4,2),10)
LSTR_DD=parseInt(LISTR_Date.substr(6,2),10)+parseInt(LISTR_AddDays,10)
while(LINT_FLAG==0)
{
switch (LSTR_MM)
{
case 2:
if ((LSTR_YY % 4) != 0)
{
if (LSTR_DD >28)
{
LSTR_DD -=28
LSTR_MM =3
}
else
{
LINT_FLAG=1
}
}
else
{
if (((LSTR_YY % 100) == 0) &&((LSTR_YY % 400) != 0))
{
if (LSTR_DD >28)
{
LSTR_DD -=28
LSTR_MM =3
}
else
{
LINT_FLAG=1
}
}
else
{
if (LSTR_DD >29)
{
LSTR_DD -=29
LSTR_MM =3
}
else
{
LINT_FLAG=1
}
}
}
break
case 4:
case 6:
case 9:
case 11:
if (LSTR_DD >30)
{
LSTR_DD -=30
LSTR_MM +=1
}
else{LINT_FLAG=1}
break
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
if (LSTR_DD >31)
{
LSTR_DD -=31
LSTR_MM +=1
}
else
{
LINT_FLAG=1
}
break
case 12:
if (LSTR_DD >31)
{
LSTR_DD -=31
LSTR_MM=1
LSTR_YY +=1
}
else
{
LINT_FLAG=1
}
break
default:
return
break
}
}
if (LSTR_MM<10)
{
LSTR_MM="0" +LSTR_MM
}
if (LSTR_DD<10)
{
LSTR_DD="0" +LSTR_DD
}
if(LISTR_DateType=="MMDDYYYY")
return LSTR_MM+""+LSTR_DD+""+LSTR_YY+""
else
return LSTR_YY+""+LSTR_MM+""+LSTR_DD+""
}
</script>
</head>
<body onload="window_onload()">
</body>
</html>