|
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 } |