Ich bezweifle, dass ich der einzige bin, der diese Lösung gefunden hat, aber wenn Sie eine bessere haben, posten Sie sie bitte hier. Ich möchte diese Frage einfach hier lassen, damit ich und andere sie später suchen können.
Ich musste feststellen, ob ein gültiges Datum in ein Textfeld eingegeben wurde, und dies ist der Code, den ich mir ausgedacht habe. Ich feuere dies an, wenn der Fokus das Textfeld verlässt.
try
{
DateTime.Parse(startDateTextBox.Text);
}
catch
{
startDateTextBox.Text = DateTime.Today.ToShortDateString();
}
c#
datetime
validation
Matt
quelle
quelle
Parse
AnwendungenTryParse
referencesource.microsoft.com/#mscorlib/system/globalization/...Antworten:
Dies ist meiner Meinung nach schneller und bedeutet, dass Sie keine hässlichen Versuche / Fänge verwenden müssen :)
z.B
quelle
if(DateTime.TryParse(startDateTextBox.Text, out var temp))
:)Verwenden Sie keine Ausnahmen für die Flusskontrolle. Verwenden Sie DateTime.TryParse und DateTime.TryParseExact . Persönlich bevorzuge ich TryParseExact mit einem bestimmten Format, aber ich denke, es gibt Zeiten, in denen TryParse besser ist. Beispiel für eine Verwendung basierend auf Ihrem Originalcode:
Gründe für die Bevorzugung dieses Ansatzes:
quelle
Hier ist eine weitere Variante der Lösung, die true zurückgibt, wenn die Zeichenfolge in einen
DateTime
Typ konvertiert werden kann, andernfalls false.quelle
Ich würde die DateTime.TryParse () -Methode verwenden: http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx
quelle
Was ist mit TryParse ?
quelle
Ein Problem bei der Verwendung
DateTime.TryParse
besteht darin, dass der sehr häufige Anwendungsfall für die Dateneingabe von Daten, die ohne Trennzeichen eingegeben wurden, nicht unterstützt wird, z011508
.Hier ist ein Beispiel, wie dies unterstützt werden kann. (Dies ist von einem Framework, das ich erstelle, daher ist seine Signatur etwas seltsam, aber die Kernlogik sollte verwendbar sein.):
quelle
// Angenommen, die Eingabezeichenfolge hat ein kurzes Datumsformat.
Beispiel: "2013/7/5" gibt true oder
"2013/2/31" false zurück.
http://forums.asp.net/t/1250332.aspx/1
// bool booleanValue = ValidateBirthday ("12:55"); gibt false zurück
quelle
quelle
Alle Antworten sind ziemlich gut, aber wenn Sie eine einzelne Funktion verwenden möchten, kann dies funktionieren.
quelle
Sie können auch das
DateTime
Format für eine bestimmte definierenCultureInfo
quelle
quelle
string
einDateTIme
Wert überprüft werden kann, der einen Wert enthält oder nicht . Sie überprüfen, ob eine bestimmteDateTime
Standardwerte hat (entsprechend0001-01-01T00:00:00.0000000
). Wie beantwortet dies die Frage?quelle
quelle