如何验证日期?我的意思不是格式,而是逻辑.例如:2月30日不是有效日期.
var date = new Date("2015-02-29T13:02:49.073Z"); // 2015 Feb 29th does not exist
console.log(date.toISOString());
Run Code Online (Sandbox Code Playgroud)
返回2015-03-01T13:02:49.073Z(3月1日).
但我想要一个这个日期(输入)无效的信息.
编辑:在Chrome中测试过.Firefox返回"无效日期".但不是解析.只有在使用日期时(例如toISOString())才会抛出异常.
try
{
var date = new Date("2015-02-29T13:02:49.073Z");
console.log(date.toISOString());
}
catch(e)
{
console.log("error: " + e.message);
}
Run Code Online (Sandbox Code Playgroud)
火狐:
失效日期
铬:
(没有,只是切换到下一个日期.)
摘要:它取决于浏览器.所以,不推荐使用.
我使用此函数来检查日期是否有效:
function isValidDate(year, month, day) {
month = month - 1;
var d = new Date(year, month, day);
if (d.getFullYear() == year && d.getMonth() == month && d.getDate() == day) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我能想到的最简单的事情是将解析的日期转换为 ISO 字符串并将其与原始输入进行比较:
var input = "2015-02-29T13:02:49.073Z"
var date = new Date(input);
var isValid = (input === date.toISOString());
Run Code Online (Sandbox Code Playgroud)