在Javascript中验证日期

时间:2013-06-06 11:16:21

标签: javascript

请注意,这似乎是一个多次被问到的问题,但不知怎的,我无法获得最常用的解决方案。 大多数答案都围绕着像这样的解决方案:

function isValidDate(){
  var dateString = '2001/24/33';
  return !isNaN(Date.parse(dateString));
}

在Firefox中,由于Date.parse是一个数字,因此返回false; 10414.62亿。

我该如何解决这个问题??

2 个答案:

答案 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/

非常酷的图书馆。