2016-06-02 19 views
0

Ich versuche im Moment ein Datum im Format yyyy/MM/dd zu konvertieren. Um zu überprüfen, ob ein gültiges Datum angegeben ist.Datetime.TryParse kann das Format JJJJ/MM/TT nicht analysieren

if(!DateTime.TryParse(textBoxDatumVanStorting.Text, out Test2)) 

Ist das, was ich im Moment benutze, aber es gibt mir immer ein falsches Datum.

Ich habe in Verwendung DateTime.TryParseExact verwendet. Aber scheint nicht zu funktionieren.

+2

Mögliche Duplikat [Datetime-Parsing von benutzerdefinierten Datumsformat in .NET] (http://stackoverflow.com/questions/2560540/datetime-parsing-of-custom-date-format-in-net) –

+0

Was genau ist _wrong date_? Was ist dein 'textBoxDatumVanStorting.Text' und deine' CurrentCulture'? –

+0

Nun das Format im verwenden ist JJJJ/MM/TT. textBoxDatumVanStorting.Text enthält 1994/09/27 als Datum. Aber Tryparse ist nicht in der Lage, das Format im zu analysieren. – Blasje

Antwort

5

ein Format angeben

Betrachten Sie die DateTime.TryParseExact() Methode, die Sie explizit erlauben wird, das Format definieren Sie Ihre Zeichenfolge ist in:

// This will attempt to parse your date in exactly the format provided 
if(!DateTime.TryParseExact(textBoxDatumVanStorting.Text,"yyyy/MM/dd", null, DateTimeStyles.None, out Date2)) 
{ 
    // Your date is not valid, consider doing something 
} 

A Matter of Kultur

In Im obigen Beispiel repräsentiert der dritte übergebene Parameter die spezifische Kultur/das Format, das Sie zum Parsen verwenden möchten das Datum. Mit null wird auf die aktuelle Kultur Standard, aber wenn Sie dies explizit angeben müssen, können Sie dies hier als die invariante Kultur gesehen werden:

Date output; 
if(!DateTime.TryParseExact(input,"yyyy/MM/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out output)) 
{ 
    // Uh oh again... 
} 
+0

Danke, das hat funktioniert. Nur musste DateTimeStyles.None zu System.Globalization.DateTimeStyles.None ändern – Blasje

+0

@Blasje - Sie können 'using System.Globalization' am Anfang Ihrer Datei hinzufügen, so dass Sie nicht so viel Code eingeben müssen. –

0

Wenn DateTime.TryParsekann die Zeichenfolge nicht analysieren, dass Mittel Dieses Format yyyy/MM/dd ist kein Standard-Datumsformat für Ihre CurrentCulture.

Sie können DateTime.TryParseExact mit benutzerdefiniertem Format wie verwenden;

DateTime Test2; 
if (DateTime.TryParseExact(textBoxDatumVanStorting.Text, "yyyy/MM/dd", 
          CultureInfo.InvariantCulture, 
          DateTimeStyles.None, out Test2)) 
{ 
    // Successfull parse 
}