请注意,这似乎是一个多次被问到的问题,但不知怎的,我无法获得最常用的解决方案。 大多数答案都围绕着像这样的解决方案:
function isValidDate(){
var dateString = '2001/24/33';
return !isNaN(Date.parse(dateString));
}
在Firefox中,由于Date.parse是一个数字,因此返回false; 10414.62亿。
我该如何解决这个问题??
答案 0 :(得分:2)
执行此操作的一种好方法是基于字符串创建新的日期对象,并将该对象的结果与输入字符串进行比较。如果它不相同,则日期无效,JS回退到更近(有效)的日期。像这样:
function isValidDate(str){
var split = str.split('/');
var date = new Date(split[0], split[1]-1, split[2]);
return (date.getFullYear() == split[0] && date.getMonth()+1 == split[1] && date.getDate() == split[2]);
}
致电:
var isValid = isValidDate('2001/24/33');
注意:在这种情况下,假定输入字符串采用特定格式。如果您确定它始终采用相同的格式,则没有问题。如果没有,您需要在此代码上进行更多工作。
作为旁注:如果您需要进行大量的日期操作,请使用moment.js。
答案 1 :(得分:0)
我建议使用http://www.datejs.com/。
非常酷的图书馆。