Wątpię, że jestem jedynym, który wymyślił to rozwiązanie, ale jeśli masz lepsze, napisz je tutaj. Chcę po prostu zostawić to pytanie tutaj, aby ja i inni mogli je później przeszukać.
Musiałem stwierdzić, czy w polu tekstowym została wpisana prawidłowa data i to jest kod, który wymyśliłem. Uruchamiam to, gdy fokus opuszcza pole tekstowe.
try
{
DateTime.Parse(startDateTextBox.Text);
}
catch
{
startDateTextBox.Text = DateTime.Today.ToShortDateString();
}
c#
datetime
validation
Matt
źródło
źródło
Parse
używaTryParse
referenceource.microsoft.com/#mscorlib/system/globalization/ ...Odpowiedzi:
Uważam, że jest to szybsze i oznacza, że nie musisz używać brzydkich prób / chwytów :)
na przykład
źródło
if(DateTime.TryParse(startDateTextBox.Text, out var temp))
:)Nie używaj wyjątków do kontroli przepływu. Użyj DateTime.TryParse i DateTime.TryParseExact . Osobiście wolę TryParseExact z określonym formatem, ale wydaje mi się, że są chwile, kiedy TryParse jest lepsze. Przykładowe użycie na podstawie oryginalnego kodu:
Powody preferowania tego podejścia:
źródło
Oto inna odmiana rozwiązania, która zwraca wartość true, jeśli ciąg można przekonwertować na
DateTime
typ, lub false w przeciwnym razie.źródło
Użyłbym metody DateTime.TryParse (): http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx
źródło
A co z używaniem TryParse ?
źródło
Problem z używaniem
DateTime.TryParse
polega na tym, że nie obsługuje bardzo powszechnego przypadku użycia przy wprowadzaniu danych z datami wprowadzanymi bez separatorów, np011508
.Oto przykład, jak to wspierać. (To jest z frameworka, który buduję, więc jego podpis jest trochę dziwny, ale podstawowa logika powinna być użyteczna):
źródło
// załóżmy, że ciąg wejściowy ma format krótkiej daty.
np. „2013/7/5” zwraca prawdę, a
„2013/2/31” zwraca fałsz.
http://forums.asp.net/t/1250332.aspx/1
// bool booleanValue = ValidateBirthday ("12:55"); zwraca false
źródło
źródło
Wszystkie odpowiedzi są całkiem świetne, ale jeśli chcesz użyć jednej funkcji, może to zadziałać.
źródło
Możesz także zdefiniować
DateTime
format dla konkretnegoCultureInfo
źródło
źródło
string
która może zawieraćDateTIme
wartość lub nie . Sprawdzasz, czy danyDateTime
ma wartości domyślne (odpowiadające0001-01-01T00:00:00.0000000
). Jak to odpowiada na pytanie?źródło
źródło