2011-06-11 35 views
2

我正在使用MaskedEditExtender輸入日期時間。我無法弄清楚如何驗證它。如何驗證MM/dd/yyyy hh:mm格式的日期時間?

是否有隨時間MM/DD/YYYY HH一起驗證日期,任何正則表達式:毫米

或任何JavaScript函數?

+0

嘗試從這裏走起來: http://www.regular-expressions.info/dates.html 該網站介紹瞭如何修改正則表達式以滿足您的需求。 – 2011-06-11 05:45:32

回答

6

這將解決您的問題:

^(([0]?[1-9]|1[0-2])/([0-2]?[0-9]|3[0-1])/[1-2]\d{3}) (20|21|22|23|[0-1]?\d{1}):([0-5]?\d{1})$ 
+0

現在它的工作..謝謝.. – Lakshmitha 2011-06-11 06:19:11

+0

再次一個問題,如果我給錯誤的格式顯示錯誤消息,但空的時間它不顯示errormsg .. – Lakshmitha 2011-06-11 06:28:38

+0

@Lakshmitha,我已經更新了我的正則表達式。請嘗試一下,讓我知道如果有任何問題.. – Harun 2011-06-11 07:44:28

2

使用DateTime.ParseDateTime.TryParse(也有ParseExactTryParseExact等價物)。

如果字符串不代表有效DateTime它不會解析。

DateTime myDateTime = DateTime.ParseExact(myString, 
              "MM/dd/yyyy hh:mm", 
              CultureInfo.InvariantCulture); 

如果該值不可解析,則上述操作將拋出異常。如果要避免發生異常,請使用Try變體 - 這需要參數out並測試函數的返回值以獲得成功。

+2

基於OP詢問「任何Javascript函數」的事實,我不認爲C#代碼會有用。它看起來像OP需要客戶端驗證。 – Gabe 2011-06-11 06:59:46

+0

@Gabe - OP做了C#標記問題,因此我的答案。這個問題在我看來也被問到解析 - 不一定使用JS。 – Oded 2011-06-11 08:51:53

+0

看起來好像OP已經在C#中編寫了他們的ASP.NET頁面,但正在尋找客戶端驗證。考慮到他們要求正則表達式或Javascript函數,我刪除了C#標記。 – Gabe 2011-06-11 15:10:25

3

JavaScript有Date.parse

它需要美國MM/DD/YYYY HH的格式的日期:MM:SS

alert(new Date(Date.parse("09/10/2011 12:00")))

將返回10日2011年9月中午

2

而就在如果你想要正則表達式,這應該工作:

^(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/(19|20)\d\d ([01]\d|2[0-3]):[0-5]\d$ 
0

你可以試試下面,在驗證日期函數 「DD/MM/YYYY HH:MM」格式

function ValidateDate(dt) { 
     try { 
      var isValidDate = false; 
      var arr1 = dt.split('/'); 
      var year=0;var month=0;var day=0;var hour=0;var minute=0;var sec=0; 
      if(arr1.length == 3) 
      { 
       var arr2 = arr1[2].split(' '); 
       if(arr2.length == 2) 
       { 
        var arr3 = arr2[1].split(':'); 
        try{ 
         year = parseInt(arr2[0],10); 
         month = parseInt(arr1[1],10); 
         day = parseInt(arr1[0],10); 
         hour = parseInt(arr3[0],10); 
         minute = parseInt(arr3[1],10); 
         //sec = parseInt(arr3[0],10); 
         sec = 0; 
         var isValidTime=false; 
         if(hour >=0 && hour <=23 && minute >=0 && minute<=59 && sec >=0 && sec<=59) 
          isValidTime=true; 
         else if(hour ==24 && minute ==0 && sec==0) 
          isValidTime=true; 

         if(isValidTime) 
         { 
          var isLeapYear = false; 
          if(year % 4 == 0) 
           isLeapYear = true; 

          if((month==4 || month==6|| month==9|| month==11) && (day>=0 && day <= 30)) 
            isValidDate=true; 
          else if((month!=2) && (day>=0 && day <= 31)) 
            isValidDate=true; 

          if(!isValidDate){ 
           if(isLeapYear) 
           { 
            if(month==2 && (day>=0 && day <= 29)) 
             isValidDate=true; 
           } 
           else 
           { 
            if(month==2 && (day>=0 && day <= 28)) 
             isValidDate=true; 
           } 
          } 
         } 
        } 
        catch(er){isValidDate = false;} 
       } 

      } 

      return isValidDate; 
     } 
     catch (err) { alert('ValidateDate: ' + err); } 
    }