JavaScript验证日期的存在

时间:2010-10-29 15:18:25

标签: javascript validation date

我的日期格式为YYMMDD。无论如何我可以在JavaScript中验证它吗? 通过验证,我并不是指像长度,角色等更容易的东西,而是如果日期存在于现实生活中。

我希望有一种更快/更好的方法,而不是分成2个字符的3个块并单独检查每个字符。

谢谢。

3 个答案:

答案 0 :(得分:3)

尝试将其转换为日期,如果失败,你会得到可怕的NaN,那么你知道它不是一个有效的日期字符串吗?不漂亮,但它应该工作

var myDate = new Date(dateString);
// should write out NaN
document.write("Date : " + myDate);

You date string would have to be in a valid format for javascript我认为您的问题YYMMDD中的内容不受支持

答案 1 :(得分:1)

Javascript Date.parse不支持YYMMDD格式,因此您必须对其进行一些处理,例如将其分解为部分。

我建议构建一个函数,将它分成3个2字符串,然后构建美式日期

MM / DD / YY并尝试使用Date.parse解析它。

如果它返回除NaN之外的任何内容,则其为有效日期。

答案 2 :(得分:1)

JavaScript中的Date解析器非常无用。它接受的实际格式因浏览器而异; ECMAScript标准保证可以使用的唯一格式是实现的toStringtoUTCString方法产生的任何格式。在ECMAScript第五版中,您还将获得ISO-8166格式,该格式更接近您的格式,但仍然不完整。

因此,最好的解决方案通常是自己解析它。

var y= parseInt(s.slice(0, 2), 10)+2000;
var m= parseInt(s.slice(2, 4), 10)-1;
var d= parseInt(s.slice(4, 6), 10);
var date= new Date(Date.UTC(y, m, d));

现在你有一个Date对象代表UTC的输入日期。但这还不够,因为Date构造函数允许伪造月份,如13或几天,如40,缠绕。因此,检查给定的一天是真实的一天,转换回年/月/日并比较:

var valid= date.getUTCFullYear()===y && d.getUTCMonth()===m && d.getUTCDate()===d;