2009-08-04 15 views
2

Ich habe ein asp.net Textfeld für Datumseingabe, ich benutze regulären Ausdruck, um den Benutzer geben Datum im TT-MM-JJJJ-Format, aber wenn ich das Eingabedatum in Datetime-Objekt, den Monat und Tag Werte sind vertauscht. Wie kann man den richtigen Weg für die Interpretation dieses Eingabedatums angeben?Angeben von Datum Eingabeformat

+0

Wie konvertieren Sie nach DateTime? –

+0

Ich verwende DateTime fromDate = Convert.ToDateTime (this.txtFromDate.Text); – Blerta

Antwort

1

können Sie verwenden DateTime.ParseExact

+0

Ich habe DateTime.ParseExact verwendet (this.txtFromDate.Text, "TT-MM-JJJJ", CultureInfo.CultureInvariant) Sei vorsichtig mit MM Großbuchstaben, denn es ist wichtig :-) Danke – Blerta

1

Sie können dies erreichen, indem eine Kultur angeben, die das Format dd-mm-yyyy wie Deutschland verwendet:

DateTime dateTime = DateTime.Parse("01-12-2009", CultureInfo.GetCultureInfo("de-DE")); 
Console.WriteLine(dateTime.ToString("dd MMM yyyy")); 

produziert:

01 Dec 2009 

Natürlich wollen Sie wirklich alle tun Ihre kulturspezifische Verarbeitung in der Kultur Ihres Nutzers. So sollte CultureInfo.GetCultureInfo("de-DE")CultureInfo.CurrentCulture sein.

Und wenn Ihr Benutzer nicht gewohnt ist, Daten wie TT-MM-JJJJ zu sehen, dann verwenden Sie dieses Format nicht.

0

Ich habe DateTime.Parse() in der Vergangenheit verwendet.

Aber es klingt wie Sie Kultur Problem haben sind, so könnte dieser Ansatz besser:

// Parse a date and time with no styles. 
    dateString = "03/01/2009 10:00 AM"; 
    culture = CultureInfo.CreateSpecificCulture("en-US"); 
    styles = DateTimeStyles.None; 
    try 
    { 
    result = DateTime.Parse(dateString, culture, styles); 
    outputBlock.Text += String.Format("{0} converted to {1} {2}.", 
         dateString, result, result.Kind.ToString()) + "\n"; 
    } 
    catch (FormatException) 
    { 
    //Error 
    } 

Weitere Informationen über Msdn: http://msdn.microsoft.com/en-us/library/ey1cdcx8(VS.96).aspx

Aber man könnte auch das Datum der Zeit aufbauen, ob das funktioniert besser:

DateTime d = new DateTime(Y, M, D); 
0

Es klingt, als würde die App unter einer anderen Kultur laufen als erwartet von Ihnen als Benutzereingabe. Vielleicht möchten Sie change the culture zu dem, den Sie erwarten.

Verwandte Themen