Wie machen DateTime-unabhängig von der aktuellen Kultur?
Cam ich versuchen, zu konvertieren, eine datetime-Zeichenfolge und zurück, sondern machen Sie es so, dass es funktioniert für alle Kulturen.
Ich haben im Grunde ein Textfeld (tbDateTime) und ein label (lbDateTime). Das label sagt dem Benutzer, in welchem format erwartet die software die Eingabe von tbDateTime. Die Eingabe der Textbox verwendet werden, für das ein MySQL Befehl.
Derzeit funktioniert es so:
lbDateTime.Text = "DD.MM.YYYY hh:mm:ss"; //I live in germany
DateTime date = Convert.ToDateTime(tbDateTime.Text);
String filter = date.ToString("yyyy-MM-dd HH:mm:ss");
Nun meine Frage:
- Ist es möglich zu bestimmen, der format-string für lbDateTime.Der Text basiert auf der aktuellen Kultur?
- Welches format hat die Konvertieren.ToDateTime-Funktion verwendet?
Ich hoffe Ihr könnt mir helfen. Ich habe eigentlich keine pc hier zu testen verschiedener Kulturen, also ich bin sehr Angst, dass mache ich etwas falsch.
InformationsquelleAutor S. Richter | 2011-05-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstatt die
Convert.ToDateTime
Methode, die Sie verwenden können, dieDateTime.Parse
oderDateTime.ParseExact
Methoden. Beide ermöglichen es Ihnen passieren, eine Kultur, die erzählt, wie Sie erwarten, dass das Datum formatiert werden.Den
DateTime.ParseExact
Methode können Sie das format angeben, das Sie erwarten, so dass Sie analysieren können mehr oder weniger jedes format mit dieser Methode.Edit:
Bezüglich
Convert.ToDateTime
. Die Dokumentation sagt, dass die aktuelle Kultur verwendet wird, wenn das Parsen: http://msdn.microsoft.com/en-us/library/xhz1w05e.aspxDie aktuelle Kultur finden Sie über den
System.Threading.Thread.CurrentThread.CurrentCulture
Eigenschaft.Edit2:
Oh. Möglicherweise möchten Sie auch zu verwenden
DateTime.TryParse
undDateTime.TryParseExact
wenn Sie unsicher sind, ob das gegebene format ist ungültig.Edit3:
Viele Bearbeitungen hier... ich sehe, dass Sie möchten, um zu bestimmen, die Kultur-Zeichenfolge, die mit dem Datum der Benutzer eingegeben hat. Es gibt keine Allgemeine Lösung, die garantiert wird, um hier zu arbeiten. Sagen zum Beispiel, dass der Benutzer eingegeben hat, das Datum 01.02.11. Es gibt keine Möglichkeit, sicher zu sein, wenn Sie dieses Datum im Tag.Monat.Jahr oder Monat.Tag.Jahr oder Jahr.Monat.Tag und so weiter.
Die besten können Sie tun ist, um eine Liste der erwarteten input-Kulturen und beginnen mit am meisten und versuchen zu analysieren, das Datum mit. Wenn das fehlschlägt, können Sie versuchen, die zweite wahrscheinlich und so weiter...
Aber das ist wirklich nicht zu empfehlen. Entweder geben die Nutzer dem erwarteten format, oder besser, verwenden Sie ein Datums-Eingabefeld, wird sichergestellt, dass Sie erhalten das ausgewählte Datum in ein geeignetes format.
InformationsquelleAutor Rune Grimstad
Den
Convert.ToDateTime
Methode aufrufenDateTime.Parse
zum Parsen der Zeichenfolge, unter Verwendung der aktuellen Kultur (CultureInfo.Current
).Können Sie eine Kultur beim analysieren der Zeichenfolge. Beispiel:
Können Sie
DateTime.ParseExact
(oderDateTime.TryParseExact
) analysiert die Zeichenfolge mit einem benutzerdefinierten Datumsformat an. Beispiel:InformationsquelleAutor Guffa
Andere Lösung :
InformationsquelleAutor CPS