📅  最后修改于: 2023-12-03 15:26:47.488000             🧑  作者: Mango
在Javascript中,我们经常需要检查用户输入的日期是否有效。为了确保程序正常运行,并避免出现不必要的错误,我们需要使用一些技巧来检查日期是否符合我们的要求。
我们可以将用户输入的日期字符串转换为JavaScript中的日期类型,再用一些方法来判断日期是否有效。下面是一个基本的代码片段:
function isValidDate(dateString) {
var regEx = /^\d{4}-\d{2}-\d{2}$/;
if(!dateString.match(regEx)) return false; // Invalid format
var d = new Date(dateString);
var dNum = d.getTime();
if(!dNum && dNum !== 0) return false; // NaN value, Invalid date
return d.toISOString().slice(0,10) === dateString;
}
这个函数接受一个日期字符串作为参数,如果日期有效则返回true,否则返回false。
首先,我们使用正则表达式来检查用户输入的日期格式是否正确。在上面的代码中,我们使用了一个简单的正则表达式 ^\d{4}-\d{2}-\d{2}$
来检查日期格式是否为yyyy-mm-dd。
var regEx = /^\d{4}-\d{2}-\d{2}$/;
if(!dateString.match(regEx)) return false; // Invalid format
接下来,我们使用new Date()
方法将日期字符串转换为Date对象。如果日期无效,则getTime()
方法将返回NaN,否则将返回代表该日期的时间戳。
var d = new Date(dateString);
var dNum = d.getTime();
if(!dNum && dNum !== 0) return false; // NaN value, Invalid date
最后,我们使用toISOString()
方法将日期转换为ISO格式,然后与传入的日期字符串作比较。如果两者相等,则日期有效。
return d.toISOString().slice(0,10) === dateString;
以下是一些测试数据,用于测试上面的函数是否可以正确检查日期是否有效。
| 日期字符串 | 预期结果 | | ---------- | -------- | | "1992-09-08" | true | | "2021-02-29" | false | | "01-01-2020" | false | | "2020-04-31" | false |
通过使用上面的代码片段,我们可以轻松地检查用户输入的日期是否有效。好的日期检查可以帮助我们避免许多不必要的错误。