2013-05-27 18 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

タイトル、タイトルを見て、私はあなたが 'TryParseExact'が高速であることを言うとき – David

答えて

17

になりたいことは、あなたがあなたの質問に更新され、複数のフォーマットを確認したい場合、あなたはformatパラメータを取りTryParseExactの別のオーバーロードメソッドを使用して行うことができますDateTime.TryParseExact

DateTime dt; 

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

をお試しください文字列の配列として。

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

あなたが任意の参照を持っていますかを理解し、「しかし」ではないだろうか? – Otiel

+0

私はこのブログの記事(http://blog.joachim.at/?p=42)を見つけました。これは古い質問からです。 – KZIA

関連する問題