//函数名:CheckDateTime  
//功能介绍:检查是否为日期时间 
function CheckDateTime(str){  
    var reg = /^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; 
    var r = str.match(reg); 
    if(r==null)return false; 
    r[2]=r[2]-1; 
    var d= new Date(r[1], r[2],r[3], r[4],r[5], r[6]); 
    if(d.getFullYear()!=r[1])return false; 
    if(d.getMonth()!=r[2])return false; 
    if(d.getDate()!=r[3])return false; 
    if(d.getHours()!=r[4])return false; 
    if(d.getMinutes()!=r[5])return false; 
    if(d.getSeconds()!=r[6])return false; 
    return true;
}
注:代码原作者:阿信

解决方案 »

  1.   

    <script language="javascript">
    function isDate(sDate)
    {
    var reDate=/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/;
    if(!reDate.test(sDate)) return false;
    var y=parseInt(RegExp.$1), m=parseInt(RegExp.$2), d=parseInt(RegExp.$3);
    if(m>12 || d>31) return false;
    var sMonth="4|6||9|11";
    if(sMonth.indexOf(String(m))!=-1 && d==31) return false;
    if((y%4!=0 || (y%4==0 && y%400!=0)) && m==2 && d>28) return false;
    return true;
    }
    alert(isDate("1983-02-29"));
    alert(isDate("1982-09-22"));
    </script>
      

  2.   


    时间输入验证。blur一下,可以看到效果<br/>
    时间1<input onblur="checkTimeInput(this);" value="2002.3.6 12:30"><br/>
    时间2<input onblur="checkTimeInput(this);" value="2.3.6"><br/>
    时间3<input onblur="checkTimeInput(this);" value="2002/2/31"><br/>
    时间4<input onblur="checkTimeInput(this);" value="fdsaf"><br/>
    <script>  
    function checkTimeInput(obj)  //此函改由原来验证日期的函数改写而成,有擅作主张之嫌,请慎用
    {
    if (obj.value.length==0) return false;
    var objValue=obj.value.replace(/[-\.]/g,"/");
    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()+" "+a.getHours()+":"+a.getMinutes()+":"+a.getSeconds();
    obj.value=obj.value.replace(/[-\.\/]0*/g,"-");
    if ((new Date(b.replace(/[-\.]/g,"/")))-(new Date(obj.value.replace(/[-\.]/g,"/")))!=0)
    {
    obj.value=b;
    alert("!!!!请注意:\n您刚才输入的日期不正确,我们已进行了修改。");
    obj.select();
    obj.focus();
    return false;
    }
    obj.value=b;
    return true;
    }</script>
    日期验证及自动纠错。
    http://jkisjk.vip.sina.com/code/html/forCheckDateInput.htm更多(如日历等)请到
    http://jkisjk.vip.sina.com/code/html/
      

  3.   

    To  xinyunyishui(心云意水) 如果输入日期格式是这样的方式呢mm/dd/yyyy呢??
    To  JK_10000(JK1)是否可以有个焦点,让对方知道哪个日期输入有问题?
      

  4.   

    To  xinyunyishui(心云意水)如果输入错误报错的话怎么写?我实验了好象不成功
      

  5.   

    To  JK_10000(JK1)是否可以有个焦点,让对方知道哪个日期输入有问题?
    ---------------------------------------------------------
    详情参见:
    http://jkisjk.vip.sina.com/code/html/inputcheck.htm里面做了一个说明:“预设值(包括所有的非手工输入的值)必须正确”
    由于要演示效果,所以JK预设了几个不合规范的输入值,实际上的操作里不会有这样的情形发生,即不会同时出现好几个输入框里同时有不合规范的输入值。
    :)
      

  6.   

    明白了,我去看了,谢谢你,关于日期的基本解决了,只是它要求有点麻烦,因为他本身是sql 数据库,字段类型是datetime,吃不准,输入时除了输入日期,不知道什么时候会不会输入时间,汗,不过谢谢楼上的, javascript好多没学到用到呢,现在只好先copy了:)
      

  7.   

    To JK_10000(JK1) 是否可以把你上面的代码给改一下,因为对方输入不是yyyy-mm-dd的形式,是mm/dd/yyyy的形式,中间有其他转换你不用管它的,因为现在我写成mm/dd/yyyy他自动变成yyyy-mm-dd不太好
      

  8.   

    mm/dd/yyyy他自动变成yyyy-mm-dd不太好
    ------------------------------------
    JK本人以为把各种形势都改成yyyy-mm-dd要恰当一点,因为yyyy-mm-dd大约也可以算个标准。再说从数据库里取出来的时候,大家也一般写成这个样子。
    我不大清楚您想要的是什么样的效果,可能是看您的话没有看明白。
    :)
      

  9.   

    因为输入记录的是国外人,可能他们是按照mm/dd/yyyy的格式进行输入。同时虽然数据库字段内容形如:2003-3-17,但是当我修改该条记录时,他在input里显示也是mm/dd/yyyy的值,如果按照你的方法,他会自动转换成yyyy-mm-dd的形式,这样不太好,虽然程序不会出错,也不一定影响数据的添加修改,不过对于输入修改记录的人来说,可能不是最好办法。