2013-05-27 24 views
8

我正在使用一種方法來驗證文本框。使用DateTime.TryParse()檢查幾種日期格式

public bool ValidateDateTimeTextBoxes(params TextBox[] textBoxes) 
    { 
     DateTime value = DateTime.Today; 
     //string dateFormat = "dd/mm/yyyy"; 

     foreach (var textBox in textBoxes) 
     { 
      if (!DateTime.TryParse(textBox.Text, out value)) 
      { 
       return false; 
      } 
     } 

     return true; 
    } 

我也想檢查格式。它需要mm/dd/yyyy,但希望它是dd/mm/yyyy

+3

查找TryParseExact –

+1

標題,標題,我無法理解「而是」 – David

回答

17

嘗試DateTime.TryParseExact

DateTime dt; 

DateTime.TryParseExact(textBox.Text, 
         "dd/MM/yyyy", 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, 
         out dt); 

如果要檢查多個格式,你在你的問題更新,那麼你可以做使用TryParseExact另一個重載方法,它採用format參數作爲字符串的數組。

string[] formats = { "dd/MM/yyyy", "MM/dd/yyyy" }; 
DateTime.TryParseExact(txtBox.Text, 
         formats, 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, 
         out value)); 

請注意格式化字符串。正如你所提到的格式爲dd/mm/yyyy。這裏mm代表minute不是這個月。月份表示使用MM

2
DateTime.TryParseExact(textBox.Text, "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out outDt)) 
1
public bool ValidateDateTimeTextBoxes(params TextBox[] textBoxes) 
    { 
     DateTime value = DateTime.Now; 
     //string dateFormat = "dd/mm/yyyy"; 

     foreach (var textBox in textBoxes) 
     { 
      if (!DateTime.TryParse(textBox.Text,"dd/mm/yyyy",new CultureInfo("en-US"), 
          DateTimeStyles.None out value)) 
      { 
       return false; 
      } 
     } 

     return true; 
    } 
1

嘗試使用TryParseExact

一個日期和時間的日期時間其等效的指定字符串表示形式轉換。字符串表示的格式必須完全匹配指定的格式。該方法返回一個值,指示轉換是否成功。

DateTime.TryParseExact(DateValue, 
         "dd/mm/yyyy", 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, 
         out outDatetime); 
1

使用TryParseExact代替它也更快。 例子:

using System; 
using System.Globalization; 

class Program 
{ 
    static void Main() 
    { 
     string dateString = "27/05/2012"; // <-- Valid 
     string dtformat = "dd/mm/yyyy"; 
     DateTime dateTime; 
     if (DateTime.TryParseExact(dateString, dtformat, CultureInfo.InvariantCulture, 
      DateTimeStyles.None, out dateTime)) 
     { 
      Console.WriteLine(dateTime); 
     } 
    } 
} 
+0

你有任何引用當你說'TryParseExact'更快呢? – Otiel

+0

我發現了這篇博文(http://blog.joachim.at/?p=42),來自一個較舊的問題。 – KZIA