0

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

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

在 Firefox 中,这会返回 false,因为 Date.parse 是一个数字;1041462000000。

我该如何解决..?

4

2 回答 2

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 。

于 2013-06-06T11:18:22.470 回答
0

我建议使用http://www.datejs.com/

很酷的图书馆。

于 2013-06-06T11:28:00.260 回答