关于当前输入日期的下一天,结果很诡异。。。
葡月荞麦 2011-11-01 08:38:46 如果输入2011年3月3日,结果是2011年4月1日;如果输入的是2011年2月3日,结果是2011年2月31日。
求指点。。。
代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>下一天</title>
<script language="javascript">
function nextdate() {
var year;
var month;
var date;
year = document.f1.datay.value;
month = document.f1.datam.value;
date = document.f1.datad.value;
if (is_valid_date(year,month,date)) {
var nextd;
nextd=date_add(year,month,date);
print_date(nextd);
} else {
alert("无效日期");
}
}
function is_valid_date(y,m,d) {
if (y>=1800 && y<=2049) {
if (m>=1 && m<=12) {
if (d>=1 && d<=last_day(y,m)) {
return true;
} else {
return false;
}
} else {
return false;
}
}else {
return false;
}
}
function last_day(y,m) {
if(m==2){
if(is_run_year(y)) {
return 29;
}else {
return 28;
}
}else if(m==1||m==3||m==5||m==7||m==8||m==10||m==12){
return 31;
}else {
return 30;
}
}
function is_run_year(y) {
if(y%4==0 && y%100!=0 || y%400==0) {
return true;
}else {
return false;
}
}
function date_add(y,m,d) {
if(d==last_day(y,m)) {
if (m==12) {
d1=new Date(y+1,1,1);
return d1;
}else {
d1=new Date(y,m+1,1);
return d1;
}
}else {
d1=new Date(y,m,d+1);
return d1;
}
}
function print_date(result) {
window.alert("下一天是" + result.getYear() + "年" + result.getMonth() + "月" + result.getDate() + "日");
}
</script>
</head>
<body>
<form id="f1" name="f1" method="post" action="">
<p>NextDate问题</p>
<p>年:
<label>
<input name="datay" type="text" id="datay" />
</label>
月:
<label>
<input name="datam" type="text" id="datam" />
</label>
日:
<label>
<input name="datad" type="text" id="datad" />
</label>
</p>
<p>
<label>
<input type="button" name="Submit" value="NextDate " onclick="nextdate()"/>
</label>
</p>
</form>
</body>
</html>