我的日期格式为YYMMDD。无论如何我可以在JavaScript中验证它吗? 通过验证,我并不是指像长度,角色等更容易的东西,而是如果日期存在于现实生活中。
我希望有一种更快/更好的方法,而不是分成2个字符的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标准保证可以使用的唯一格式是实现的toString
和toUTCString
方法产生的任何格式。在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;