话不多说,直接贴代码:
JavaScript部分:
function MyFunction() {
var monthStr = document.getElementById("dm").value;
var dayStr = document.getElementById("dd").value;
var yearStr = document.getElementById("dy").value;
var a = parseInt(monthStr);
var b = parseInt(dayStr);
var c = parseInt(yearStr);
if (judgeInput(a, b, c) && judgeValidation(a, b, c)) {
/*new Date(year,month,day)中month是从0开始的*/
var vdate = new Date(c, (a - 1), b);
var pdate = new Date(vdate.valueOf() - 1000 * 60 * 60 * 24);
var ndate = new Date(vdate.valueOf() + 1000 * 60 * 60 * 24);
document.getElementById("myresult").innerHTML = "前一天:" + pdate.getFullYear() + "年" + (pdate.getMonth() + 1) + "月" + pdate.getDate() + "日" + " || 后一天:" + ndate.getFullYear() + "年" + (ndate.getMonth() + 1) + "月" + ndate.getDate() + "日";
} else {
alert("输入了超出限定范围或不存在的日期。");
}
}
/**
* 验证输入是否为数字
* @return {boolean}
*/
function judgeInput(a, b, c) {
if (isNaN(c) || isNaN(a) || isNaN(b)) {
return false;
} else {return true;}
}
/**
* 验证输入日期是否有效
* @return {boolean}
*/
function judgeValidation(intMonth, intDay, intYear) {
var d = new Date(intYear, (intMonth - 1), intDay);
return (d.getFullYear() === intYear && (d.getMonth() + 1) === intMonth && d.getDate() === intDay);
}
html部分:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<hr/>
<form action="" method="post" name="">
<label>月份<input name="a" id="dm"/></label><br/>
<label>日份<input name="b" id="dd"/></label><br/>
<label>年份<input name="c" id="dy"/></label><br/>
<input type="button" id="butn" value="计算前后一天的日期" onclick="MyFunction()"/>
<span id="myresult"></span>
</form>
<hr/>
</body>
</html>
参考资料:
[1] W3School.JavaScript Date 对象[EB/OL].[2019-09-11].https://www.w3school.com.cn/jsref/jsref_obj_date.asp.
[2] dz45693.js日期有效性验证的一点思考[EB/OL].[2019-09-11].https://www.cnblogs.com/majiang/p/5578883.html.