废话不多说,直接上代码。
// 判断输入的日期是否正确 支持日期格式 YYYYMMDD,YYYY?MM?DD
function CheckyDate(strDate) {
var subYY, subMM, subDD;
var YY, MM, DD;
if (strDate == null || strDate == "") {
return false;
}
//截取日期
if (strDate.length == 8) {
subYY = strDate.substring(0, 4);
subMM = strDate.substring(4, 6);
subDD = strDate.substring(6);
} else if (strDate.length == 10) {
subYY = strDate.substring(0, 4);
subMM = strDate.substring(5, 7);
subDD = strDate.substring(8);
} else {
return false;
}
YY = parseInt(subYY,10);
MM = parseInt(subMM,10);
DD = parseInt(subDD,10);
//验证年
if (isNaN(YY) || YY <= 0) {
return false;
}
//验证月
if (isNaN(MM) || MM <= 0 || MM > 12) {
return false;
}
// 转换日
if (isNaN(DD) || DD <= 0) {
return false;
}
if ((YY % 4 == 0 && YY % 100 != 0) || YY % 400 == 0) { //判断是否为闰年
if (MM == 2) { //闰年的二月份
if (DD > 29) {
return false;
}
}
} else {
if (MM == 2) { //非闰年的二月份
if (DD > 28) {
return false;
}
}
}
var mm = new Array(4, 6, 9, 11); //判断每月中最大天数是30或者31
for (i = 0; i < mm.length; i++) {
if (MM == mm[i]) {
if (DD > 30) {
return false;
}
} else {
if (DD > 31) {
return false;
}
}
}
if (MM > 12) {
return false;
}
return true;
}