2013-05-27 11 views
8

Ich verwende eine Methode, um Textfelder zu überprüfen.Überprüfen Sie mehrere Datumsformate mit 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; 
    } 

Ich möchte das Format auch überprüfen. Es erfordert mm/dd/yyyy, aber wollen es dd/mm/yyyy

+3

sehen TryParseExact –

+1

Titel, Titel, konnte ich nicht verstehen „sondern“ – David

Antwort

17

Versuchen DateTime.TryParseExact

DateTime dt; 

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

sein, wenn Sie mehrere Formate überprüfen möchten, wie Sie in Ihrer Frage aktualisiert dann können Sie eine weitere Überlastung Methode TryParseExact Sie mit der format Parameter übernimmt als Array von String.

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

Bitte achten Sie auf Formatzeichenfolge. Wie Sie erwähnt Format als dd/mm/yyyy. Hier stellt mm den minute nicht den Monat dar. Verwenden Sie MM für die Monatsdarstellung.

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

Versuchen TryParseExact

Konvertiert die angegebene Zeichenfolgendarstellung eines Datums und der Uhrzeit seiner Datetime-Äquivalent verwendet. Das Format der Zeichenfolgendarstellung muss exakt einem angegebenen Format entsprechen. Die Methode gibt einen Wert zurück, der angibt, ob die Konvertierung erfolgreich war.

1

Verwenden Sie stattdessen TryParseExact, die auch schneller ist. Beispiel:

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

Haben Sie eine Referenz, wenn Sie sagen, dass 'TryParseExact' schneller ist? – Otiel

+0

Ich hatte diesen Blogbeitrag gefunden (http://blog.joachim.at/?p=42), hier von einer älteren Frage. – KZIA

Verwandte Themen