我现在想校验三种日期型的情况,分别是yyyy,yyyy-mm,yyyy-mm-dd,在前台输入的文本框输入,通过模糊查询到数据库,这三种情况都可以查到数据,分别是年,月,日,还要求月必须是1到12月,闰年,我在javascript写的,这是我在判断yyyy-mm-dd的代码,请大哥们帮帮忙!!!!!function DispMessage(CheckCtl,Msg)
{
if (Msg!="")
{
alert(Msg);
//CheckCtl.select();
CheckCtl.focus();
}
}
function checkit()
{
if(!seaarch.cwrq.value==""){
if (!(seaarch.cwrq.value.match(/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/)))
{
DispMessage(seaarch.cwrq,"“成文日期必须为日期格式”例如:2008-08-08");
return false;
}
else{
return true;
}
}else{
return true;
}
}
{
if (Msg!="")
{
alert(Msg);
//CheckCtl.select();
CheckCtl.focus();
}
}
function checkit()
{
if(!seaarch.cwrq.value==""){
if (!(seaarch.cwrq.value.match(/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/)))
{
DispMessage(seaarch.cwrq,"“成文日期必须为日期格式”例如:2008-08-08");
return false;
}
else{
return true;
}
}else{
return true;
}
}
var pattern = /(^\d{4}$)|(^\d{4}-(0[1-9]|1[0-2])$)|(^\d{4}-(0[1-9]|1[0-2])-\d{2}$)/;
var date = "2009-11-30";
alert(pattern.test(date));
</script>
谢谢
* 是否为日期 格式yyyy-MM-dd
*/
validate.prototype.isDate = function (str) {
return new RegExp("^((\\d{4})|(\\d{2}))([-])(\\d{1,2})\\4(\\d{1,2})$").test(str);
}
/**
* 校验时间 格式yyyy-MM-dd HH:mm:ss
*/
validate.prototype.isDateTime = function (str) {
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,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],r[5],r[6],r[7]);
var month =(""+ (d.getMonth()+1)).length <= 1?"0"+ (d.getMonth()+1):""+ (d.getMonth()+1);
var day = (""+ d.getDate()).length <= 1?"0"+ d.getDate():""+ d.getDate();
var hh = (""+ d.getHours()).length <= 1?"0"+ d.getHours():""+ d.getHours();
var mm = (""+ d.getMinutes()).length <= 1?"0"+ d.getMinutes():""+ d.getMinutes();
var ss = (""+ d.getSeconds()).length <= 1?"0"+ d.getSeconds():""+ d.getSeconds();
var newStr = d.getFullYear()+r[2]+month+r[2]+day+" "+hh+":"+mm+":"+ss;
return newStr == str;
}
if(!str.match/(^\d{4}$)|(^\d{4}-(0[1-9]|1[0-2])$)|(^\d{4}-(0[1-9]|1[0-2])-\d{2}$)/)){
return false;
} var year = RegExp.$1;
var mon = RegExp.$2;
var wday = RegExp.$3;
var date = new Date(year, mon - 1, wday);
var len = str.split("-");
if (len == 0){wday = 1;date = 1;}
else if (len == 1){date = 1;} if(year != date.getFullYear() || mon != date.getMonth() + 1 || wday != date.getDate()){
return false;
}
return true;
}
以上方法可对应所有合法日期。