可能重複:
Detecting an 「invalid date」 Date instance in JavaScriptJavaScript的檢測有效日期
我用的是以下檢測到有效日期:
var text = $('#Date').val();
var date = Date.parse(text);
if (isNaN(date)) {
// Invalid date
}
卻發現Date.parse認爲以下是有效日期(mm/dd/yyyy)
- 2011年2月30日
- 2011年11月31日
任何其他方式來檢測無效的日期時的天數超過的 日在該月的總數是多少?
UPDATE:一個更大的問題是,jQuery驗證插件沒有任何檢測爲無效日期!
SOLUTION:
基於@ 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);
}
Date.parse認爲不是它們是正確的,但它會將它們轉換爲正確的日期。例如。 2011年2月30日將在投票結束後作爲'03/02/2011' – Andreas
截止,我意識到提供的問題是*不*相同,儘管它是相關的。 – zzzzBov
由於我需要在多個語言環境中支持輸入,因此我們實現了我們自己的日期解析器。我們發現檢測到這個錯誤的唯一方法是比較我們解析的月份字符串與生成日期的月份 –