原帖:孟子E章
http://dotnet.aspx.cc/file/Check-Date-Using-JavaScript.aspx
JavaScript 代碼// 檢查輸入的日期是否是一個正確的日期格式:
// 支援 yyyy-M-d、yyyy-MM-dd、yyyy/M/d、yyyy/MM/dd 四種輸入格式。
function checkDate(strInputDate) {
// 定義一個月份天數常量數組
var DA
= [0,
31,
28, 31,
30,
31, 30,
31,
31, 30,
31,
30, 31];
// 統一日期格式
strDate
= strInputDate.replace(/-/g,
"/");
//判斷日期是否是預期的格式
if (strDate.indexOf("/")
== -1) {
alert("請輸入 yyyy-M-d、yyyy-MM-dd、yyyy/M/d、yyyy/MM/dd 格式。")
return
false;
}
// 分解出年月日
arrD = strDate.split("/");
if (arrD.length
!= 3)
return
false;
y = parseInt(arrD[0],
10);
m = parseInt(arrD[1],
10);
d = parseInt(arrD[2],
10);
//判斷年月日是否是數字
if (isNaN(y)
|| isNaN(m)
|| isNaN(d))
return
false;
// 判斷月份是否在1-12之間
if (m
> 12
|| m
< 1)
return
false;
//判斷是否是閏年
if (isLoopYear(y)) DA[2]
= 29;
//判斷輸入的日是否超過了當月月份的總天數。
if (d
> DA[m])
return false;
//各種條件都驗證了,則應該是一個合法的日期了。
// 如果要對日期進行一次格式化,則可以在這裡進行處理了,下面格式化成資料庫識別的日期格式 yyyy-MM-dd
// str = y + "-" + (m<10?"0":"") + m + "-" + (d<10?"0":"") + d;
str = y
+ "-"
+ (m
< 10
? "0" :
"")
+ m +
"-"
+ (d
< 10
? "0" :
"")
+ d;
alert(str)
return
true;
}
function isLoopYear(theYear) {
return (new Date(theYear,
1, 29).getDate()
== 29);
}
//方法二:
/// 檢查輸入的日期是否是一個正確的日期格式:
/// 支援 yyyy-M-d、yyyy-MM-dd、yyyy/M/d、yyyy/MM/dd 四種輸入格式。
function CheckDate2(strInputDate) {
if (strInputDate
== "")
return
false;
strInputDate = strInputDate.replace(/-/g,
"/");
var d
= new Date(strInputDate);
if (isNaN(d))
return
false;
var arr
= strInputDate.split("/");
return ((parseInt(arr[0],
10)
== d.getFullYear())
&& (parseInt(arr[1],
10)
== (d.getMonth()
+ 1))
&& (parseInt(arr[2],
10)
== d.getDate()));
}