如何用JS判断某个字符串可以转换成日期?已知有三个变量 分别代表年月日a="2010";b="2"c="31" mydate=a+b+c;   //    组合成时间格式"2010-2-31" 现在 通过JS 判断mydate 是否是合法的日期。规则:a,b,c不能为空,不能为0;2月份的时候 日子不能超过29大月31 小月 30 不过我想,应该不要那么麻烦,应该JS有直接一条语句就可以判断它是否是合法的日期吧?

解决方案 »

  1.   

    一句话判定!new Date(a + "/" + b + "/" + c).getMonth() == b-1
      

  2.   

    a、b、c只要都是 能转换为数字的变量就可以(甚至可以是null ,布尔值),就能用new Date(y,m,d)新建一个日期格式,
    而按照你的要求,new Date(a,b,c).getMonth() == b-1为TRUE的时候就满足,否则则不满足
      

  3.   

    function IsDate(dateValue) {
        var regex = new RegExp("^(?:(?:([0-9]{4}(-|\/)(?:(?:0?[1,3-9]|1[0-2])(-|\/)(?:29|30)|((?:0?[13578]|1[02])(-|\/)31)))|([0-9]{4}(-|\/)(?:0?[1-9]|1[0-2])(-|\/)(?:0?[1-9]|1\\d|2[0-8]))|(((?:(\\d\\d(?:0[48]|[2468][048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))(-|\/)0?2(-|\/)29))))$");
        if (!regex.test(dateValue))
            return false;
        else
            return true;
    }
    传过来判断
      

  4.   

    if(new Date(a,b,c).getMonth()==b-1)
    {
        alert("a b c 合法");
    }
    else
    {
        alert("a b c 无效");
    }
      

  5.   

     var regex = new RegExp("^(?:(?:([0-9]{4}(-|\/)(?:(?:0?[1,3-9]|1[0-2])(-|\/)(?:29|30)|((?:0?[13578]|1[02])(-|\/)31)))|([0-9]{4}(-|\/)(?:0?[1-9]|1[0-2])(-|\/)(?:0?[1-9]|1\\d|2[0-8]))|(((?:(\\d\\d(?:0[48]|[2468][048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))(-|\/)0?2(-|\/)29))))$");    if (regex.test(a+'-'+b+'-'+c))
             alert("OK");
      

  6.   

    var a1="2010";

    var a3="01";
    var a4="09";
      
       var d=new Date(a1,a3,a4);
       if(typeof(d)=='object')
       {
        alert("哈哈,转成日期类型啦"+d.getMonth());
       }
      

  7.   

    哥是这样玩的:
    function checkDate(text) {
    if (!text) return false;
    text = text.replace(/[\/-]0?/g, "/");
    if (!text.match(/^\d{4}\/\d{1,2}\/\d{1,2}$/)) return false;
    var d = new Date(text);
    return [d.getFullYear(), d.getMonth() + 1, d.getDate()].join("/") == text;
    }document.open();
    var datas = ["", "2010-01-01", "2010/02/30", "2010/02", "2010/22/30", "2012/2/29", "2012/02/29"];
    for(var i = 0; i < datas.length; i++) {
    document.write(datas[i], "=", checkDate(datas[i]), "<br/>");
    }
    document.close();输出=false
    2010-01-01=true
    2010/02/30=false
    2010/02=false
    2010/22/30=false
    2012/2/29=true
    2012/02/29=true