时间判断。急用~~! isDate好象是用在vbscript里面的,不是javascript的函数 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 javascript中好像没有isDate函数的吧,你自己编写的?? /** IsDate: 用于判断一个字符串是否是日期格式的字符串 返回值: true或false 参数: DateString: 需要判断的字符串 Dilimeter : 日期的分隔符,缺省值为´-´ Author: PPDJ sample: var date = ´1999-1-2´; if (IsDate(date)) { alert(´You see, the default separator is "-"); } date = ´1999/1/2"; if (IsDate(date,´/´)) { alert(´The date´s separator is "/"); } */ function IsDate(DateString , Dilimeter) { if (DateString==null) return false; if (Dilimeter==´´ || Dilimeter==null) Dilimeter = ´-´; var tempy=´´; var tempm=´´; var tempd=´´; var tempArray; if (DateString.length<8 && DateString.length>10) return false; tempArray = DateString.split(Dilimeter); if (tempArray.length!=3) return false; if (tempArray[0].length==4) { tempy = tempArray[0]; tempd = tempArray[2]; } else { tempy = tempArray[2]; tempd = tempArray[1]; } tempm = tempArray[1]; var tDateString = tempy + ´/´+tempm + ´/´+tempd+´ 8:0:0´;//加八小时是因为我们处于东八区 var tempDate = new Date(tDateString); if (isNaN(tempDate)) return false; if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd))) { return true; } else { return false; } } /** 不好意思,拷下来把一些隐藏的东西也贴上去了自己看下面的吧http://www.meidi.net/Article/wangye/j-s/200507/2517.html <SCRIPT language=Jscript> function isDate(y,m,d){ var maxDays; if(y<1) return false; if((m<1)||(m>12)) return false; if(m==2) maxDays=(((y%4==0) && (y%100!=0))||(y%400==0))?29:28; else maxDays=((m==4||m==6||m==9||m==11))?30:31; return ((d>=1) && (d<=maxDays))}function isstrDate(str){ var arr=str.split("-"); return (isDate(arr[0],arr[1],arr[2]));}alert(isstrDate("1984-4-30"));</SCRIPT> function isDate(sDate) { var iYear, iMonth, iDay, iIndex var reg reg = new RegExp('[^0-9-]','') if (sDate.search(reg) >= 0) return false; iIndex = sDate.indexOf('-'); if ( iIndex == -1 ) return false; else { iYear = parseFloat(sDate.substr(0, iIndex)); if ( isNaN(iYear) || iYear < 1900 || iYear > 2099 ) return false; else sDate = sDate.substring(iIndex + 1, sDate.length); } iIndex = sDate.indexOf('-'); if ( iIndex == -1 ) return false; else { iMonth = parseFloat(sDate.substr(0, iIndex)); if ( isNaN(iMonth) || iMonth < 1 || iMonth > 12 ) return false; else sDate = sDate.substring(iIndex + 1, sDate.length); } iIndex = sDate.indexOf('-'); if ( iIndex >= 0 ) return false; else { iDay = parseFloat(sDate); if ( isNaN(iDay) || iDay < 1 || iDay > 31 ) return false; } switch(iMonth) { case 4: case 6: case 9: case 11: if ( iDay > 30 ) return false; else break; case 2: if ( ( ( iYear % 4 == 0 && iYear % 100 != 0 ) || iYear % 400 == 0 ) && iDay > 29 ) return false; else if ( (iYear % 4 != 0 || (iYear % 100 == 0 && iYear % 400 != 0)) && iDay > 28 ) return false; else break; default: } return true;}function parseDate(sDate) { var iIndex, iYear, iMonth, iDay iIndex = sDate.indexOf('-'); iYear = parseFloat(sDate.substr(0, iIndex)); sDate = sDate.substring(iIndex + 1, sDate.length); iIndex = sDate.indexOf('-'); iMonth = parseFloat(sDate.substr(0, iIndex)); iDay = parseFloat(sDate.substring(iIndex + 1, sDate.length)); return new Date(iYear, iMonth - 1, iDay);} 不好意思.忘了打了~! 这个是一个data.js的文件。在页面调用的 <SCRIPT language=JavaScript src="/js/date1.js"></SCRIPT> 我写过的一个日期验证函数,处理yyyy-mm-dd格式的字符串<script language="JavaScript"><!--function CheckDate(strDate){ var reg=/^(\d{4})([-])(\d{2})([-])(\d{2})/; if(!reg.test(strDate)){ alert("日期格式不正确!\n正确格式为:2004-01-01"); return false; } var ss=strDate.split("-"); var year=ss[0]; var month=ss[1]; var date=ss[2]; if(!checkYear(year)){return false;} if(!checkMonth(month)){return false;} if(!checkDate(year,month,date)){return false;} return true;}function checkYear(year){ if(isNaN(parseInt(year))){alert("年份输入有误,请重新输入!"); return false;} else if(parseInt(year)<1950 || parseInt(year) >2050){ alert("年份应该在1950-2050之间!"); return false} else return true;}function checkMonth(month){ if(isNaN(parseInt(month))){alert("月份输入有误,请重新输入!"); return false;} else if(parseInt(month)<1 || parseInt(month) >12){ alert("月份应该在1-12之间!"); return false} else return true;}function checkDate(year,month,date){ var daysOfMonth=CalDays(parseInt(year),parseInt(month)); if(isNaN(parseInt(date))){alert("日期输入有误,请重新输入!"); return false;} else if(parseInt(date)<0||parseInt(date)>daysOfMonth){ alert("日期应该在1-"+daysOfMonth+"之间!"); return false;} else return true;}function CalDays(year,month){/* var days=0; switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break; case 4: case 6: case 9: case 11: days=30;break; case 2: if(isLeapYear(year)) days=29; else days=28; break; } return days;*/ var date= new Date(year,month,0); return date.getDate();}function isLeapYear(year){ if((year %4==0 && year %100!=0) || (year %400==0)) return true; else return false;}alert(CheckDate("2007-02-29"));//--></script> 其实楼上的都是在做空事儿~~~其实Date对象的几个参数可以帮我们完成这些事情,new Date(year,month,day,hours,minutes,seconds);其中的参数随你怎么样输入,反正它会将你输入的日期都转换成正确的日期格式.若new Date(2005,13,45);大家自己试试,何必要去做检测... 但是我对JS实在不熟悉。现在在做一个订房的程序,需要JS空间选取时间。就像携程那种。我可以提供一个网址 http://travel.elong.com/hotels/default.aspx?Campaign_ID=4200338 类似于这种时间选取的。我也要对时间做多种判断。上面问的只是其中一种,不知道大家有没有做过这样的控件? 这个办法有投机性质,但代码更简练function isDate(y,m,d){ var dt=new Date(y-1900,m-1,d); return (dt.getYear()+1900==y)&&(dt.getMonth()+1==m)&&(dt.getDate()==d);} 下而是我写的一个是不是按格式的日期的检测;有一个问题还不完成就是,大小月,和2月份的日期的问题,等写好再发,<input id=qidizi onkeydown=checkkey(this.value);><span id=show>请输入正确的时间格式:四位年份-二位月份(不足前补0)-二位日期(不足前补0)<script language ='javascript'><!--//自己写当处理时检测是不是为空,要是为空就提示输入function checkkey(text){//只能用数字键和删除和- if(event.shiftKey || event.altKey || event.ctrlKey) { event.returnValue = false; } var key = event.keyCode ; if(key == 8 ) {//退格:8 }else if(key == 109 || key == 189 ) {//- if( /^[1-9]\d{3}$/.test(text) == false && /^[1-9]\d{3}-(?:(?:0[1-9])|(?:1[012]))$/.test(text) == false ) {//不能输入- event.returnValue = false; } }else if( ( key >95 && key < 106) || ( key >47 && key < 58) ) {//0-9 if( /^\d{4}$/.test(text) || /^\d{4}-\d{2}$/.test(text) || /^\d{4}-\d{2}-\d{2}$/.test(text)) {//连线,完成不能输入数字 return event.returnValue = false; } if( (key == 96 || key == 48) && ( /^ *$/.test(text) || /^\d{4}-0$/.test(text) || /^\d{4}-\d{2}-0$/.test(text) ) ) {//开始不能输入0; 月份十位为0时,日期十位为0时也不能; return event.returnValue = false; } if( /^\d{4}-$/.test(text) && ( key != 96 && key != 48 & key != 97 & key != 49) ) {//月份开始只能输入0,1 return event.returnValue = false; } if( /^\d{4}-1$/.test(text) && ( key != 96 && key != 48 && key != 97 && key != 49 && key != 98 && key != 50) ) {//月份个位1只能输入0,1,2 return event.returnValue = false; } if( /^\d{4}-\d{2}-$/.test(text) && ( key != 96 && key != 48 && key != 97 && key != 49 && key != 98 && key != 50 && key != 99 && key != 51) ) {//日期十位只能输入0,1,2,3 return event.returnValue = false; } if( /^\d{4}-\d{2}-3$/.test(text) && ( key != 96 && key != 48 && key != 97 && key != 49 ) ) {//日期十位是3时,个位只能输入0,1 return event.returnValue = false; } }else { event.returnValue = false; }}//--></script> String.prototype.isDate=function(){ return /\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}/.test(this);}alert("2003-2-10 12:23:42".isDate()); js中调用其它方法什么时候加括号 百分向大家请教一个js的问题 这么大个论坛没有人会使用ckeditor3.0的图片上传功能?? JS图片代码 事件执行的问题 关于props属性,不太明白 html前台验证文件类型,大小 关于关闭敞口的问题!!急(再线等)立即给分 关于HTML在线编辑器 帮助我扫盲,谢谢。 传值问题 求教:网页左下角的感叹号到底是什么意思?如何调试?在线等!!
IsDate: 用于判断一个字符串是否是日期格式的字符串 返回值:
true或false 参数:
DateString: 需要判断的字符串
Dilimeter : 日期的分隔符,缺省值为´-´ Author: PPDJ
sample:
var date = ´1999-1-2´;
if (IsDate(date))
{
alert(´You see, the default separator is "-");
}
date = ´1999/1/2";
if (IsDate(date,´/´))
{
alert(´The date´s separator is "/");
}
*/ function IsDate(DateString , Dilimeter)
{
if (DateString==null) return false;
if (Dilimeter==´´ || Dilimeter==null)
Dilimeter = ´-´;
var tempy=´´;
var tempm=´´;
var tempd=´´;
var tempArray;
if (DateString.length<8 && DateString.length>10)
return false;
tempArray = DateString.split(Dilimeter);
if (tempArray.length!=3)
return false;
if (tempArray[0].length==4)
{
tempy = tempArray[0];
tempd = tempArray[2];
}
else
{
tempy = tempArray[2];
tempd = tempArray[1];
}
tempm = tempArray[1];
var tDateString = tempy + ´/´+tempm + ´/´+tempd+´ 8:0:0´;//加八小时是因为我们处于东八区
var tempDate = new Date(tDateString);
if (isNaN(tempDate))
return false;
if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd)))
{
return true;
}
else
{
return false;
}
} /**
自己看下面的吧
http://www.meidi.net/Article/wangye/j-s/200507/2517.html
function isDate(y,m,d){
var maxDays;
if(y<1) return false;
if((m<1)||(m>12)) return false;
if(m==2) maxDays=(((y%4==0) && (y%100!=0))||(y%400==0))?29:28;
else maxDays=((m==4||m==6||m==9||m==11))?30:31;
return ((d>=1) && (d<=maxDays))
}
function isstrDate(str){
var arr=str.split("-");
return (isDate(arr[0],arr[1],arr[2]));
}
alert(isstrDate("1984-4-30"));
</SCRIPT>
var iYear, iMonth, iDay, iIndex var reg
reg = new RegExp('[^0-9-]','')
if (sDate.search(reg) >= 0)
return false;
iIndex = sDate.indexOf('-');
if ( iIndex == -1 )
return false;
else {
iYear = parseFloat(sDate.substr(0, iIndex));
if ( isNaN(iYear) || iYear < 1900 || iYear > 2099 )
return false;
else
sDate = sDate.substring(iIndex + 1, sDate.length);
}
iIndex = sDate.indexOf('-');
if ( iIndex == -1 )
return false;
else {
iMonth = parseFloat(sDate.substr(0, iIndex));
if ( isNaN(iMonth) || iMonth < 1 || iMonth > 12 )
return false;
else
sDate = sDate.substring(iIndex + 1, sDate.length);
}
iIndex = sDate.indexOf('-');
if ( iIndex >= 0 )
return false;
else {
iDay = parseFloat(sDate);
if ( isNaN(iDay) || iDay < 1 || iDay > 31 )
return false;
}
switch(iMonth) {
case 4:
case 6:
case 9:
case 11:
if ( iDay > 30 )
return false;
else
break;
case 2:
if ( ( ( iYear % 4 == 0 && iYear % 100 != 0 ) || iYear % 400 == 0 ) && iDay > 29 )
return false;
else if ( (iYear % 4 != 0 || (iYear % 100 == 0 && iYear % 400 != 0)) && iDay > 28 )
return false;
else
break;
default:
}
return true;
}function parseDate(sDate) {
var iIndex, iYear, iMonth, iDay
iIndex = sDate.indexOf('-');
iYear = parseFloat(sDate.substr(0, iIndex));
sDate = sDate.substring(iIndex + 1, sDate.length);
iIndex = sDate.indexOf('-');
iMonth = parseFloat(sDate.substr(0, iIndex));
iDay = parseFloat(sDate.substring(iIndex + 1, sDate.length));
return new Date(iYear, iMonth - 1, iDay);
}
<SCRIPT language=JavaScript src="/js/date1.js"></SCRIPT>
<!--function CheckDate(strDate){
var reg=/^(\d{4})([-])(\d{2})([-])(\d{2})/;
if(!reg.test(strDate)){
alert("日期格式不正确!\n正确格式为:2004-01-01");
return false;
}
var ss=strDate.split("-");
var year=ss[0];
var month=ss[1];
var date=ss[2];
if(!checkYear(year)){return false;}
if(!checkMonth(month)){return false;}
if(!checkDate(year,month,date)){return false;}
return true;
}
function checkYear(year){
if(isNaN(parseInt(year))){alert("年份输入有误,请重新输入!"); return false;}
else if(parseInt(year)<1950 || parseInt(year) >2050){ alert("年份应该在1950-2050之间!"); return false}
else return true;
}
function checkMonth(month){
if(isNaN(parseInt(month))){alert("月份输入有误,请重新输入!"); return false;}
else if(parseInt(month)<1 || parseInt(month) >12){ alert("月份应该在1-12之间!"); return false}
else return true;
}
function checkDate(year,month,date){
var daysOfMonth=CalDays(parseInt(year),parseInt(month));
if(isNaN(parseInt(date))){alert("日期输入有误,请重新输入!"); return false;}
else if(parseInt(date)<0||parseInt(date)>daysOfMonth){ alert("日期应该在1-"+daysOfMonth+"之间!"); return false;}
else return true;
}
function CalDays(year,month){
/* var days=0;
switch(month){
case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break;
case 4: case 6: case 9: case 11: days=30;break;
case 2: if(isLeapYear(year)) days=29;
else days=28;
break;
}
return days;*/
var date= new Date(year,month,0);
return date.getDate();
}
function isLeapYear(year){
if((year %4==0 && year %100!=0) || (year %400==0)) return true;
else return false;
}
alert(CheckDate("2007-02-29"));
//-->
</script>
function isDate(y,m,d){
var dt=new Date(y-1900,m-1,d);
return (dt.getYear()+1900==y)&&(dt.getMonth()+1==m)&&(dt.getDate()==d);
}
<input id=qidizi onkeydown=checkkey(this.value);><span id=show>请输入正确的时间格式:四位年份-二位月份(不足前补0)-二位日期(不足前补0)
<script language ='javascript'>
<!--
//自己写当处理时检测是不是为空,要是为空就提示输入function checkkey(text)
{//只能用数字键和删除和- if(event.shiftKey || event.altKey || event.ctrlKey)
{
event.returnValue = false;
} var key = event.keyCode ;
if(key == 8 )
{//退格:8
}else if(key == 109 || key == 189 )
{//-
if( /^[1-9]\d{3}$/.test(text) == false && /^[1-9]\d{3}-(?:(?:0[1-9])|(?:1[012]))$/.test(text) == false )
{//不能输入-
event.returnValue = false;
}
}else if( ( key >95 && key < 106) || ( key >47 && key < 58) )
{//0-9
if( /^\d{4}$/.test(text) || /^\d{4}-\d{2}$/.test(text) || /^\d{4}-\d{2}-\d{2}$/.test(text))
{//连线,完成不能输入数字
return event.returnValue = false;
}
if( (key == 96 || key == 48) && ( /^ *$/.test(text) || /^\d{4}-0$/.test(text) || /^\d{4}-\d{2}-0$/.test(text) ) )
{//开始不能输入0; 月份十位为0时,日期十位为0时也不能;
return event.returnValue = false;
}
if( /^\d{4}-$/.test(text) && ( key != 96 && key != 48 & key != 97 & key != 49) )
{//月份开始只能输入0,1
return event.returnValue = false;
}
if( /^\d{4}-1$/.test(text) && ( key != 96 && key != 48 && key != 97 && key != 49 && key != 98 && key != 50) )
{//月份个位1只能输入0,1,2
return event.returnValue = false;
}
if( /^\d{4}-\d{2}-$/.test(text) && ( key != 96 && key != 48 && key != 97 && key != 49 && key != 98 && key != 50 && key != 99 && key != 51) )
{//日期十位只能输入0,1,2,3
return event.returnValue = false;
}
if( /^\d{4}-\d{2}-3$/.test(text) && ( key != 96 && key != 48 && key != 97 && key != 49 ) )
{//日期十位是3时,个位只能输入0,1
return event.returnValue = false;
}
}else
{
event.returnValue = false;
}
}
//-->
</script>
return /\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}/.test(this);
}
alert("2003-2-10 12:23:42".isDate());