формат даты с "мм / дд / гггг" в тексте - PullRequest
1 голос
/ 31 марта 2011

У меня есть следующий код, используя формат мм / дд / гггг ...

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 ]

3 голосов
/ 31 марта 2011

Попробуйте Datejs - библиотека дат JavaScript с открытым исходным кодом

Date.parse("22/22/1982") возвращает ноль

Это немного дополнительные издержки @ ~ 25 КБ, но это мощно, когда вынужно работать с датами

1 голос
/ 31 марта 2011
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());  
}; 
1 голос
/ 31 марта 2011

Разве вам не нужен оператор AND (&&) вместо OR (||)?

if (myDate > today || myDate < maxDOB) {
0 голосов
/ 31 марта 2011

Мне удалось использовать дату регулярного выражения (mm / dd / yyyy) с if (dob.match (re)).Я получил несколько хороших ответов, но они были несколько сложнее, чем хотелось бы.

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"; }
}
0 голосов
/ 31 марта 2011
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...