抄抄微软的看看,他也有一个校验的啊。WebUIValidation.js文件的第 212行
function checkDateTime(strTime)
{
var dateReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
return dateReg.test(strTime.trim());
}
这样我觉得就差不多了?呵呵
To layout:这样只能做最简单的校验,像大小月和闰年之类就不行了。
To Roc:文中提供的代码已经实现了闰年及大小月的校验。
// 要实在不爽就 try。。catch一下
function testDate(yyyy,mm,dd)
{
var aa = new Date(parseInt(yyyy,10), parseInt(mm,10)-1, parseInt(dd,10) );
if (aa.getMonth() != (parseInt(mm,10)-1))
{
alert("日期值错误!\n建议使用日历选择器来选择日期");
return "false";
}
else
{
alert("ok");
return "true";
}
}
testDate(2000,1,5);
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null) return false;
var d = new Date(r[1], r[3]-1, r[4]);
alert (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
function Parse_Date(sDate)
{
var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31]
var iaDate = new Array(3)
var year, month, day
var NowDate= new Date();
var TheYear=NowDate.getFullYear();
var TheMonth=NowDate.getMonth();
if (!sDate)
{
return;
}
if ((sDate.length==1 || sDate.length==2) && sDate<=30)
{
day=sDate;
month=TheMonth+1;
}else if (sDate.length==2)
{
month =sDate.substr(0,1);
day =sDate.substr(1,1);
}else if (sDate.length==3){
if (sDate.indexOf("-")>0)
{
iaDate = sDate.toString().split("-")
month =parseFloat(iaDate[0]);
day =parseFloat(iaDate[1]);
}else if (sDate.indexOf("/")>0)
{
iaDate = sDate.toString().split("/")
month =parseFloat(iaDate[0]);
day =parseFloat(iaDate[1]);
}else{
month =sDate.substr(0,1);
day =sDate.substr(1,2);
}
}else if (sDate.length==4){
if (sDate.indexOf("-")>0)
{
iaDate = sDate.toString().split("-")
month =parseFloat(iaDate[0]);
day =parseFloat(iaDate[1]);
}else if (sDate.indexOf("/")>0)
{
iaDate = sDate.toString().split("/")
month =parseFloat(iaDate[0]);
day =parseFloat(iaDate[1]);
}else{
month =sDate.substr(0,2);
day =sDate.substr(2,2);
}
}else if (sDate.length==5){
if (sDate.indexOf("-")>0)
{
iaDate = sDate.toString().split("-")
month =parseFloat(iaDate[0]);
day =parseFloat(iaDate[1]);
}else if (sDate.indexOf("/")>0)
{
iaDate = sDate.toString().split("/")
month =parseFloat(iaDate[0]);
day =parseFloat(iaDate[1]);
}else{
month =sDate.substr(0,2);
day =sDate.substr(3,2);
}
}else{
if (sDate.indexOf("-")>0){
iaDate = sDate.toString().split("-")
}else{
iaDate = sDate.toString().split("/")
}
year = parseFloat(iaDate[0])
month = parseFloat(iaDate[1])
day=parseFloat(iaDate[2])
}
if (month==2)
{
// Check for leap year
if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) )
{ // leap year
if (day > 29)
{
return 0;
}
}else
{
if (day > 28)
{
return 0;
}
}
}
if ((month==4)||(month==6)||(month==9)||(month==11))
{
if (day > 30)
{
return 0;
}
}
return new Date(TheYear*1,(month*1-1),day*1);
}