日期格式,文字中带有“mm / dd / yyyy”

时间:2011-03-31 17:43:46

标签: javascript jquery validation

我有以下代码,使用格式mm / dd / yyyy ...

var required = "";
var dob = $("#txtDOB").val();
if (dob != "") {
   var myDate = new Date(dob);
   var today = new Date();
   var maxDOB = new Date("01/01/1900");
   if (myDate > today || myDate < maxDOB) {
      required += "Invalid Birth Date \n";
   }
}

如果用户输入22/22/1982,则没有错误。我该如何验证?

5 个答案:

答案 0 :(得分:3)

尝试Datejs - An open-source JavaScript Date Library

Date.parse("22/22/1982")返回null

这需要一点额外开销@~25 kb但是当你需要使用日期时它很强大

答案 1 :(得分:1)

您不想要AND运算符(&&)而不是OR(||)吗?

if (myDate > today || myDate < maxDOB) {

答案 2 :(得分:1)

String.prototype.isValidDate = function(){  
    var arrDate = this.split("/");  
    if(arrDate.length!=3)return false;  
    var dateComp = new Date(arrDate[2], arrDate[0]-1, arrDate[1]);  
    return (arrDate[0] == dateComp.getMonth()+1 &&  
            arrDate[1] == dateComp.getDate() &&  
            arrDate[2] == dateComp.getFullYear());  
}; 

答案 3 :(得分:0)

function validMdy(str){
    var d, A= str.split(/\D+/);
    if(A[0]> 12) throw 'bad Month';
    d= new Date(A[2], A[0], 0);
    // expects month 1-12
    if(d.getDate()<A[1]) throw 'bad Date';

    return new Date(A[2], A[0]-1, A[1]);
}
var s= "22/22/1982"; // "2/29/2011"
validMdy(s)

答案 4 :(得分:0)

我设法使用if(dob.match(re))的正则表达式日期(mm / dd / yyyy)。我得到了一些很好的答案,但它们比我想要的要复杂一些。

var required = "";
var dob = $("#txtDOB").val();
var re = /^((0[0-1]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/]([0-9]{2}|[0-9]{4}))$/;
if (dob != "") {
    if (dob.match(re)) {
        var myDate = new Date(dob);
        var today = new Date();
        var maxDOB = new Date("01/01/1900");
        if (myDate > today || myDate < maxDOB) {
            required += "Invalid Birth Date \n";
        }
   }
            else { required += "Invalid Date Format \n"; }
}