2013-07-17 4 views
0

Я пытаюсь выполнить проверку формата даты в формате javascript без использования регулярного выражения. Когда я вошел в дату 26/02/2013 Я имею уведомление значение Ср Сен 2 2093 и сообщение об ошибке дата не является допустимым форматомПодтвердить формат даты с помощью регулярного выражения

Любая помощь будет признателен

function CheckDateFormat(StartDateform)  

    { 
      var StartDateform= document.getElementById('tblTarget').rows[1].cells[StartDate].getElementsByTagName('input')[0].value;   
      spl = StartDateform.split("/"); 


      var testDate=new Date(spl[2],spl[0]-1,spl[1]);    

      year= testDate.getFullYear();     
      month = testDate.getMonth()+1;     
      day= testDate.getDate(); 

      alert ("the date value is "+ " "+ testDate); 

     if (day!==spl[1] || month!==spl[0] || year!==spl[2])      
     { 
      alert ("the date value is "+ " "+ testDate); 
      alert(StartDateform + " " + "Is an Invalid Date. Please use the format 'MM/DD/YYYY'"); 
      return false; 
     } 


     return true;       
    }     

    function Submit() 
    { 
     if(CheckDateFormat()) 
     { 
     $('button_submit').click(); 
     alert('New rate submitted'); 
     } 
    } 
+1

Почему без регулярного выражения? Регулярные выражения отлично подходят для такого рода вещей. – rjmunro

+0

Просто для вашей информации существуют некоторые действительно зрелые библиотеки JS, которые отлично справляются с датами синтаксического анализа, например ** http: //momentjs.com/**. – thmshd

+1

@rjmunro regexp плохо подходит для проверки дат, так как вам нужно будет также проверить количество недействительных дат, f.ex високосных годов и другие нарушения в календаре. – David

ответ

1

Date constructor ожидает, что Y/M/D:

Date - Создает Дата экземпляры JavaScript, которые позволяют работать с даты и времени.

Синтаксис

new Date();
new Date(value);
new Date(dateString);
new Date(year, month, day [hour, minute, second, millisecond]);

Если дата 26/02/2013, вы кормить его с Y/D-1/M:

new Date(spl[2],spl[0]-1,spl[1]); 

Субъект 1 со дня не имеет никакого смысла, поэтому, я думаю, вы только что испортили индексы.

Смежные вопросы