Я сомневаюсь, что я единственный, кто придумал это решение, но если у вас есть лучший вариант, опубликуйте его здесь. Я просто хочу оставить этот вопрос здесь, чтобы я и другие могли найти его позже.
Мне нужно было сказать, была ли введена действительная дата в текстовое поле, и это код, который я придумал. Я запускаю это, когда фокус покидает текстовое поле.
try
{
DateTime.Parse(startDateTextBox.Text);
}
catch
{
startDateTextBox.Text = DateTime.Today.ToShortDateString();
}
c#
datetime
validation
Matt
источник
источник
Parse
используетTryParse
referencesource.microsoft.com/#mscorlib/system/globalization/...Ответы:
Я считаю, что это быстрее, и это означает, что вам не нужно использовать уродливые попытки / ловушки :)
например
источник
if(DateTime.TryParse(startDateTextBox.Text, out var temp))
:)Не используйте исключения для управления потоком. Используйте DateTime.TryParse и DateTime.TryParseExact . Лично я предпочитаю TryParseExact с определенным форматом, но я думаю, что бывают случаи, когда TryParse лучше. Пример использования на основе исходного кода:
Причины предпочтения этого подхода:
источник
Вот еще один вариант решения, которое возвращает true, если строку можно преобразовать в
DateTime
тип, и false в противном случае.источник
Я бы использовал метод DateTime.TryParse (): http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx
источник
А как насчет использования TryParse ?
источник
Проблема с использованием
DateTime.TryParse
заключается в том, что он не поддерживает очень распространенный вариант использования ввода данных, когда даты вводятся без разделителей, например011508
.Вот пример того, как это поддержать. (Это из фреймворка, который я создаю, поэтому его подпись немного странная, но основная логика должна быть пригодна для использования):
источник
// предположим, что входная строка имеет короткий формат даты.
например, «2013/7/5» вернет истину или
«2013/2/31» вернет ложь.
http://forums.asp.net/t/1250332.aspx/1
// bool booleanValue = ValidateBirthday ("12:55"); возвращает ложь
источник
источник
Все ответы довольно хороши, но если вы хотите использовать одну функцию, это может сработать.
источник
Вы также можете определить
DateTime
формат для конкретногоCultureInfo
источник
источник
string
что может содержать или не содержатьDateTIme
значение. Вы проверяете, есть ли у заданногоDateTime
значения по умолчанию (соответствующие0001-01-01T00:00:00.0000000
). Как это отвечает на вопрос?источник
источник