请注意,这似乎是一个被多次询问的问题,但不知何故,我无法获得最常见的解决方案。大多数答案都围绕着这样的解决方案:
function isValidDate(){
var dateString = '2001/24/33';
return !isNaN(Date.parse(dateString));
}
在 Firefox 中,这会返回 false,因为 Date.parse 是一个数字;1041462000000。
我该如何解决..?
请注意,这似乎是一个被多次询问的问题,但不知何故,我无法获得最常见的解决方案。大多数答案都围绕着这样的解决方案:
function isValidDate(){
var dateString = '2001/24/33';
return !isNaN(Date.parse(dateString));
}
在 Firefox 中,这会返回 false,因为 Date.parse 是一个数字;1041462000000。
我该如何解决..?
一个很好的方法是根据字符串创建新的日期对象,并将该对象的结果与输入字符串进行比较。如果不相同,则日期无效,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 。
我建议使用http://www.datejs.com/。
很酷的图书馆。