<script language=javascript> function strDateTime(str){ var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; var r = str.match(reg); if(r==null)return false; var d= new Date(r[1], r[3]-1,r[4]); var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate() return newStr==str } alert(strDateTime("2002-1-31")) alert(strDateTime("2002-1-41")) </script>
<script> function checkDate(objdate){ var msg; var info=new Array("01",31,"02",28,"03",31,"04",30,"05",31,"06",30,"07",31,"08",31,"09",30,"10",31,"11",30,"12",31) var theyear=objdate.substr(0,4) var themonth=objdate.substr(5,2) var thedate=objdate.substr(8,2) var re=/\d{4}-\d{2}-\d{2}/ if(re.test(objdate)==true){ if(parseInt(theyear)%4!=0){ for(i=0;i<12;i++){ if(themonth==info[2*i]&&parseInt(thedate)<=info[2*i+1]&&parseInt(thedate)>0){ msg="正确日期"; break;} else msg="非法日期"; } } else{ info[3]=29; for(j=0;j<12;j++){ if(themonth==info[2*j]&&parseInt(thedate)<=info[2*j+1]&&parseInt(thedate)>0){ msg="正确日期"; break;} else msg="非法日期"; } } } else msg="非法日期"; alert(msg); } checkDate("2001-02-28") </script>
1.<script> var re=/\d{4}-\d{2}-\d{2}/ alert(re.test("abc2002-01-01def")) </script>2. <script language=javascript> function strDateTime(str){ var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; var r = str.match(reg); if(r==null)return false; var d= new Date(r[1], r[3]-1,r[4]); var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate() return newStr==str } alert(strDateTime("2000-01-01")) </script>
修正如下 <script language=javascript> function strDateTime(str){ var reg = /^(\d{1,4})-(\d{1,2})-(\d{1,2})$/; var r = str.match(reg); if(r==null)return false; var d= new Date(r[1], --r[2],r[3]); if(d.getFullYear()!=r[1])return false; if(d.getMonth()!=r[2])return false; if(d.getDate()!=r[3])return false; return true; } alert(strDateTime("2000-01-01")) alert(strDateTime("abc2002-01-01def")) alert(strDateTime("2000-02-30")) </script>
function strDateTime(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
return newStr==str
}
alert(strDateTime("2002-1-31"))
alert(strDateTime("2002-1-41"))
</script>
用这个不更好?!<script>
var newDateObj = new Date("2002/02/24 12:00:22");
if(newDateObj!=null){
alert(newDateObj.toLocaleString());}
</script>
Date的
其它方法:
Date.prototype 的成员
getDate 方法
getDay 方法
getFullYear 方法
getHours 方法
getMilliseconds 方法
getMinutes 方法
getMonth 方法
getSeconds 方法
getTime 方法
getTimezoneOffset 方法
getUTCDate 方法
getUTCDay 方法
getUTCFullYear 方法
getUTCHours 方法
getUTCMilliSeconds 方法
getUTCMinutes 方法
getUTCMonth 方法
getUTCSeconds 方法
getVarDate 方法
getYear 方法
setDate 方法
setFullYear 方法
setHours 方法
setMilliSeconds 方法
setMinutes 方法
setMonth 方法
setSeconds 方法
setTime 方法
setUTCDate 方法
setUTCFullYear 方法
setUTCHours 方法
setUTCMilliseconds 方法
setUTCMinutes 方法
setUTCMonth 方法
setUTCSeconds 方法
setYear 方法
toGMTString 方法
toLocaleString 方法
toUTCString 方法
toString 方法
valueOf 方法
Date.prototype 非成员
parse 方法
UTC 方法
<script>
var newDateObj = new Date("2002/02/30 12:00:22");
if(newDateObj!=null){
alert(newDateObj.toLocaleString());
//显示:2002年3月2日12:00:22
}
</script>
格式合法,不一定日期合法,如上例。
建议还是写验证代码,或采用日期选取控件。
google search for:
javascript date validation
加些规则进去:
年:1900-2050
月:01-12
日:01-31
function checkDate(objdate){
var msg;
var info=new Array("01",31,"02",28,"03",31,"04",30,"05",31,"06",30,"07",31,"08",31,"09",30,"10",31,"11",30,"12",31)
var theyear=objdate.substr(0,4)
var themonth=objdate.substr(5,2)
var thedate=objdate.substr(8,2)
var re=/\d{4}-\d{2}-\d{2}/
if(re.test(objdate)==true){
if(parseInt(theyear)%4!=0){
for(i=0;i<12;i++){
if(themonth==info[2*i]&&parseInt(thedate)<=info[2*i+1]&&parseInt(thedate)>0){
msg="正确日期";
break;}
else
msg="非法日期";
}
}
else{
info[3]=29;
for(j=0;j<12;j++){
if(themonth==info[2*j]&&parseInt(thedate)<=info[2*j+1]&&parseInt(thedate)>0){
msg="正确日期";
break;}
else
msg="非法日期";
}
}
}
else
msg="非法日期";
alert(msg);
}
checkDate("2001-02-28")
</script>
var re=/\d{4}-\d{2}-\d{2}/
alert(re.test("abc2002-01-01def"))
</script>2.
<script language=javascript>
function strDateTime(str){
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4]);
var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate()
return newStr==str
}
alert(strDateTime("2000-01-01"))
</script>
<script language=javascript>
function strDateTime(str){
var reg = /^(\d{1,4})-(\d{1,2})-(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], --r[2],r[3]);
if(d.getFullYear()!=r[1])return false;
if(d.getMonth()!=r[2])return false;
if(d.getDate()!=r[3])return false;
return true;
}
alert(strDateTime("2000-01-01"))
alert(strDateTime("abc2002-01-01def"))
alert(strDateTime("2000-02-30"))
</script>
而后者秋水的则是比较的难懂和简洁了。 秋水的一句:
var d=new Date([r[1],r[2],r[3])是关健的。 不过我对这句还是不清楚,请教秋水,为什么 在用了这句之后,经比较相等于否这时再用alert(r[1])等时却显示undefined呢?而比较又通得过?这句话的具体意思 是什么 呢?秋水??
这段是处理闰年的:
else{
info[3]=29;
for(j=0;j<12;j++){
if(themonth==info[2*j]&&parseInt(thedate)<=info[2*j+1]&&parseInt(thedate)>0){
msg="正确日期";
break;}
else
msg="非法日期";
}
}
<script language=javascript>
function strDateTime(str){
var reg = /^(\d{1,4})-(\d{1,2})-(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], --r[2],r[3]);
if(d.getFullYear()!=r[1])return false;
alert(r[1])
if(d.getMonth()!=r[2])return false;
if(d.getDate()!=r[3])return false;
return true;
}
alert(strDateTime("2000-01-01"))
alert(strDateTime("abc2002-01-01def"))
alert(strDateTime("2000-02-30"))
</script>
you are right!
you are good!
测试值:
2.2.3
2002.3.20
2002.2.30
fdsa
<input name=a alt="日期1" onblur="checkDateInput(this)" ><script language=javascript>function checkDateInput(obj) //用于检查日期输入是否正确 (日期输入范围为1930-01-01 到2200-12-31)
{
if (obj.value.length==0) return false;
var objValue=obj.value.replace(/[-\.]/g,"/");
try
{
var a=new Date(objValue);
if (isNaN(a))
{
obj.value="";
alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进处了清除。");
obj.focus();
return false;
}
var b;
if (a.getFullYear()<1900||a.getFullYear()>2200)
{var Today=new Date();
b=Today.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();
}
else if (a.getFullYear()<1930)
b=(a.getFullYear()+100)+"-"+(a.getMonth()+1)+"-"+a.getDate();
else b=a.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate();
obj.value=obj.value.replace(/[-\.\/]0*/g,"-");
if (b!=obj.value)
{
obj.value=b;
alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进行了修改。");
obj.select();
obj.focus();
return false;
}
}
catch(Exception)
{
obj.value="";
alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进处了清除。");
obj.focus();
return false;
}
return true;
}
</script>
var theyear,themonth,thedate
var info=new Array("01",31,"02",28,"03",31,"04",30,"05",31,"06",30,"07",31,"08",31,"09",30,"10",31,"11",30,"12",31)
var msg="非法日期";
function checkDate(objdate){
theyear=objdate.substr(0,4)
themonth=objdate.substr(5,2)
thedate=objdate.substr(8,2)
var re=/\d{4}-\d{2}-\d{2}/
if(re.test(objdate)==true){
if(parseInt(theyear)%4!=0||(parseInt(objdate.substr(0,2))%4!=0&&objdate.substr(2,2)=="00"))
check()
else{
info[3]=29;
check()
}
}
function check(){
for(i=0;i<12;i++){
if(themonth==info[2*i]&&parseInt(thedate)<=info[2*i+1]&&parseInt(thedate)>0){
msg="正确日期";
break;}
else
msg="非法日期";
}
}
alert(msg);
}
checkDate("1900-02-29")
</script>