可能的重复:
在 JavaScript 中检测“无效日期”日期实例
我使用以下内容来检测有效日期:
var text = $('#Date').val();
var date = Date.parse(text);
if (isNaN(date)) {
// Invalid date
}
但是发现Date.parse认为以下是有效日期(mm/dd/yyyy)
- 2/30/2011
- 11/31/2011
当天数超过当月的总天数时,还有其他方法可以检测无效日期吗?
更新:一个更大的问题是 jQuery 验证插件也没有将此检测为无效日期!
解决方案:
根据@Guffa 的评论,我创建了以下函数来验证日期:
function validDate(text) {
var date = Date.parse(text);
if (isNaN(date)) {
return false;
}
var comp = text.split('/');
if (comp.length !== 3) {
return false;
}
var m = parseInt(comp[0], 10);
var d = parseInt(comp[1], 10);
var y = parseInt(comp[2], 10);
var date = new Date(y, m - 1, d);
return (date.getFullYear() == y && date.getMonth() + 1 == m && date.getDate() == d);
}