2013-07-17 144 views
0

我正在嘗試在不使用正則表達式的情況下編寫javascript日期格式驗證。當我輸入的日期26/02/2013我有周三的2093年9月2日的警戒值和錯誤消息的日期不是有效的格式使用正則表達式驗證日期格式

任何幫助將欣賞

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的Date實例這讓你 日期和時間工作。

語法

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沒有任何意義,所以我猜你剛剛搞混了索引。