看过许多人做的,都无比麻烦, 难道系统没有提供类似VB 中isdate的函数吗
---------------------------------------------------------------
我自己写了一个,当然还不太成熟,这是一个判断起止日期的,我想看了之后一个日期的你肯定会用了,(只做参考)
function dateJuge(Object){
re=/(1 ¦2)(\d\d\d)/(0 ¦1)(\d)/(0 ¦1 ¦2 ¦3)(\d)-(1 ¦2)(\d\d\d)/(0 ¦1)(\d)/(0 ¦1 ¦2 ¦3)(\d)/;
//re=/2003-01-01/;
if((!re.test(Object.value))&&!(String(Object.value).length==0)){
alert("输入格式错误,请重新输入!格式为:'2003/01/01-2003/03/03'");
Object.value="";
Object.focus();
}
else{
var month1=String(Object.value).substring(5,7);
var month2=String(Object.value).substring(16,18);
var day1=Number(String(Object.value).substring(8,10));
var day2=Number(String(Object.value).substring(19,21));
var year1=Number(String(Object.value).substring(0,4))%4;
var year2=Number(String(Object.value).substring(11,15))%4;
if(!monthJuge(year1,month1,day1) ¦ ¦!(monthJuge(year2,month2,day2))){
alert("输入错误,请重新输入!");
Object.value="";
Object.focus();
}
startDate=new Date(Object.value.substring(0,10));
endDate=new Date(Object.value.substring(11,21));
var second=endDate-startDate;
var day=second/86400000;
if(day<=0){
alert("日期错误,请重新收入!");
Object.value="";
Object.focus();
}
Object.style.background="#FFFFFF";
}
};
function monthJuge(year,month,day){
if(month>12)
{return false;}
if(month==4 ¦ ¦month==6 ¦ ¦month==9){
if(day>30)
return false;
else
return true;
}
else if(month==2)
{
if(year==0&&day>29)
return false;
else if(day>28)
return false;
else
return true;
}
else{
if(day>31)
return false;
else
return true;
}
}
---------------------------------------------------------------
1.使用正则表达式
///
1<summary>
2/// 校验具有value属性的控件的value年月日字符串是否合法(Date:YYYY-MM-DD),不合法就给出提示信息并使其获得焦点。
3/// </summary>
///
1<param name="date"/>
待较验的年月日字符串
///
1<returns>True,合法;False:不合法,并返回错误信息:message</returns>
/// 使用方法:ID指控件的ID标识;onBlur:失去焦点
/// onBlur="javascript:IsValidDate(ID);"
function IsValidDate(ID)
{
var sDate=ID.value.replace(/(^\s+ ¦\s+$)/g,""); //去两边空格;
if(sDate=="")
return true;
//如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为""
//数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式
var s = sDate.replace(/[\d]{4,4}[\-/]{1}[\d]{1,2}[\-/]{1}[\d]{1,2}/g,"");
if (s=="") //说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D
{
var t=new Date(sDate.replace(/\-/g,"/"));
var ar = sDate.split(/[-/ :]/);
var k = false;
if(ar[0] != t.getYear() ¦ ¦ ar[1] != t.getMonth()+1 ¦ ¦ ar[2] != t.getDate())
k = true;
if(k)
{
alert("错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。");
ID.focus();
return false;
}
}
else
{
alert("错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。");
ID.focus();
return false;
}
return true;
}
---------------------------------------------------------------
function isDate(strDate){
var yy=strDate.substring(0,4);
var mm=strDate.substring(5,7);
var dd=strDate.substring(8,10);
if(!isPosInteger(yy) ¦ ¦ !isPosInteger(mm) ¦ ¦ !isPosInteger(dd)){
return false
}
if(parseInt(yy,10)<1900 ¦ ¦ parseInt(yy,10)>2050){
return false
}
if(parseInt(mm,10)<1 ¦ ¦ parseInt(mm,10)>12){
return false
}
var dPrevDate = new Date(yy, mm, 0);
var maxd=dPrevDate.getDate();
if(parseInt(dd,10)<1 ¦ ¦ parseInt(dd,10)>maxd){
return false
}
return true
}