在网上找到一个函数,但却不好用,请大家指教,谁有更好的检查日期格式的函数
格式如:yyyy-mm-dd
function CheckDate(pFMT,pDate)
{
var ResultOK = null
/*-- 日期格式:(四位)年份 + (至多两位)月份 + (至多两位)日期 --*/
/*-- 分割符号:"." --*/
var RegDateDot = /\d{4}\.{1}\d{1,2}\.{1}\d{1,2}/
/*-- 分割符号:"-" --*/
var RegDateLine = /\d{4}-{1}\d{1,2}-{1}\d{1,2}/
/*-- 用正则表达式判断格式 --*/
switch (pFMT)
{
case 1: //.
ResultOK = RegDateDot.test(pDate)
break
case 2: //-
ResultOK = RegDateLine.test(pDate)
break
default: //.
ResultOK = RegDateDot.test(pDate)
break
}
/*-- 处理并返回结果 --*/
if(ResultOK)
{
alert("非法日期:日期格式错误!")
return false
}
/*-- 检查月份和日期是否超过可能的最大值 --*/
var mYear = 0,mMonth = 0,mDay = 0
var iPos1 = 0,iPos2 = 0
var sDate = pDate.toString()
var mSepChar = ((pFMT == 1) ? ".":"-")
/*-- 各月的天数 --*/
var MonthDays=new Array(31,28,31,30,31,30,31,31,30,31,30,31)
/*-- 提取年月日的值 --*/
iPos1 = sDate.indexOf(mSepChar)
iPos2 = sDate.indexOf(mSepChar,iPos1+1)
mYear = sDate.substring(0,iPos1)
mMonth = sDate.substring(iPos1+1,iPos2)
mDay = sDate.substr(iPos2+1)
/*-- 判断年份 --*/
if(mYear <= 0 || mYear > 9999)
{
alert("非法日期:年份过小或者过大,超出限制 (1-9999)!")
return false
}
/*-- 判断月份 --*/
if(mMonth <= 0 || mMonth > 12)
{
alert("非法日期:没有这个月份!")
return false
}
/*-- 计算所在月的正确天数 --*/
var RightDay = 0
if(mMonth == 2)
RightDay = (((mYear%4 == 0) && (mYear%100 != 0) || (mYear%400 == 0))? 29: 28)
else
RightDay = MonthDays[mMonth]
/*-- 判断日 --*/
if(mDay <= 0 || mDay > RightDay)
{
alert("非法日期:该月没有这天!")
return false
}
<