JavaScript 日期格式检查
网页开发中使用者进行输入资料。判断使用者输入日期格式是否为 YYYY/MM/DD JavaScript 日期格式检查表单日期格式,用来判断使用者输入的日期格式是否符合预期的方法。最好在客户端 JavaScript 送出资料时验证日期值是否正确,使用正则表达式 Regular Expression 来定义规则。正则表达式来检查字串模式的语法,可以用来寻找检索 match 匹配、search 搜寻或 test, exec 检测使用者输入的字串是否符合该规则。
JavaScript
但是这样只是检验其最大限制值,必须再进一步解析大月、小月、闺月的问题,否则会出现不合法的日期。
function dateValidationCheck(str) {
let re = new RegExp("^([0-9]{4})[./]{1}([0-9]{1,2})[./]{1}([0-9]{1,2})$");
let strDataValue;
let infoValidation = true;
if ((strDataValue = re.exec(str)) != null) {
let i;
i = parseFloat(strDataValue[1]);
if (i <= 0 || i > 9999) {
infoValidation = false;
}
i = parseFloat(strDataValue[2]);
if (i <= 0 || i > 12) {
infoValidation = false;
}
i = parseFloat(strDataValue[3]);
if (i <= 0 || i > 31) {
infoValidation = false;
}
} else {
infoValidation = false;
}
if (!infoValidation) {
alert("请检查输入 YYYY/MM/DD 日期格式");
}
return infoValidation;
}
Html
<form method="post" name="dateCheckFrom"
onsubmit="return dateValidationCheck(this.date.value);">
<p>请依格式输入日期 YYYY/MM/DD:</p>
<input type="text" name="date" size="15" />
<input type="submit" value="送出资料" />
</form>
判断检验日期是否正确
使用 Date.parse 但是解读字串传回其总毫秒数,使用 Date.parse 由于浏览器之间可能的不同与差异问题。
Date.parse("2019-02-29") // Firefox NaN
Date.parse("2019-02-29") // Chrome 1551398400000
Date.parse("2019-02-29") // Edge 1551398400000
Date.parse("2019-02-29") // Opera 1551398400000
尝试将日期字串使用 new Date() 但需要将结果以 getFullYear(), getMonth() 及 getDate() 提取,再次比照原输入日期字串,会有些麻烦但是可以得到浏览器之间的一致。
new Date("2019/02/29").toLocaleString();
// '2019/3/1 上午12:00:00'
💡 其中 toLocaleString() 回传依「电脑系统」的地区设定输出的日期时间字串,只是用中文比较易读。
let oDate = new Date("2019-02-29")
// Date Fri Mar 01 2019 00:00:00 GMT+0800 (台北标准时间)
如此其输入日期字串的月份及日、就是 false 不一样、需要依使用者输入之栏位方式来拆解判断。
let cYear = oDate.getFullYear();
let cMonth = oDate.getMonth() + 1;
let cDate = oDate.getDate();
输入日期字串 iYear, iMonth, iDate
let result = (iYear == cYear) && (iMonth == cMonth) && (iDate == cDate);
年
月
日
功能 : 判断 v 是否是整数
如果输入日期以年、月、日、分别输入或许会需要判断是否为数值。
function IsInt(n) {
let check = n.match(/^[0-9]+$/);
if (check == null) {
return false;
} else {
return true;
}
}
使用函式 IsNumeric 判断数值
let IsNumeric = function (input) {
return (input - 0) == input && input.length > 0;
}
IsNumeric("-1") = true
IsNumeric("-1.5") = true
IsNumeric("0") = true
IsNumeric(".38") = true
IsNumeric("1120") = true
IsNumeric("1e+3") = true
IsNumeric("0x89f") = true
IsNumeric("2,600") = false
IsNumeric("Numeric") = false
IsNumeric("") = false