中国数据网
http://www.dbchina.net
收藏本页
联系我们
 
js代码:检查日期(函数) ~ admin

function CheckDate(pFMT,pDate,pShowMsg)
{
var ResultOK = null

/*-- 日期格式:(四位)年份 + (至多两位)月份 + (至多两位)日期 --*/
/*-- 分割符号:. --*/
var RegDateDot = /d.d.d/
/*-- 分割符号:- --*/
var RegDateLine = /d-d-d/

/*-- 用正则表达式判断格式 --*/
switch (pFMT)
{
case 1: //.
ResultOK = RegDateDot.test(pDate)
break
case 2: //-
ResultOK = RegDateLine.test(pDate)
break
default: //.
ResultOK = RegDateDot.test(pDate)
break
}

/*-- 处理并返回结果 --*/
if(!ResultOK)
{
if(pShowMsg) 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)
{
if(pShowMsg) alert(非法日期:年份过小或者过大,超出限制 (1-9999)!)
return false
}

/*-- 判断月份 --*/
if(mMonth <= 0 || mMonth > 12)
{
if(pShowMsg) 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)
{
if(pShowMsg) alert(非法日期:该月没有这天!)
return false
}

/*-- 格式和值均正确,返回真 --*/
return true
}
Copyright ©2006-2009 DbChina.Net | 鲁ICP备05031207号