C #.Валидация шаблона даты - PullRequest
1 голос
/ 21 июня 2010

В моем приложении пользователь может указать шаблон для дат, введя его в текстовое поле. Этот шаблон используется для регистрации сообщений. Например, если пользователь указывает «dd-MM», то в файле журнала он может видеть следующее:

[12-06] Some message...
[02-09] Some message 2...

Как проверить этот шаблон? Как защититься от ввода неправильных шаблонов?

Ответы [ 5 ]

3 голосов
/ 21 июня 2010

Самый простой способ - просто попытаться разобрать дату.

DateTime someDate;

// Valid will be false if it could not parse the date
bool valid = DateTime.TryParse(yourFormat, out someDate);
0 голосов
/ 16 июля 2015

Это сложная проблема. Я попробовал:

try
{
    DateTime.Now.ToString(tmpFormatSpec);                    
}
catch (Exception)
{
    // the format spec is known to be bad
}

Проблема в том, что шаблоны формата даты настолько гибкие. Даже вещи, которые не отображают информацию о дате, разрешены (и не обнаруживаются моим примером кода):

DateTime.Now.ToString("bla");  // no exception raised

См. Этот другой пост SO для еще лучшего способа (я еще не пробовал).

Также см. Это обсуждение о проблеме с комментариями Дж. Скита.

0 голосов
/ 16 июля 2015

Это сложная проблема. Я попробовал:

try
{
    DateTime.Now.ToString(tmpFormatSpec);                    
}
catch (Exception)
{
    // the format spec is known to be bad
}

Проблема в том, что шаблоны формата даты настолько гибкие. Даже вещи, которые не отображают информацию о дате, разрешены (и не обнаруживаются моим примером кода):

DateTime.Now.ToString("bla");  // no exception raised

См. Этот другой пост SO для еще лучшего способа (я еще не пробовал).

Также см. Это обсуждение проблемы с комментариями Дж. Скита.

0 голосов
/ 21 июня 2010

Вы можете взглянуть на Регулярные выражения или на этот вопрос

0 голосов
/ 21 июня 2010

Регулярные выражения, вероятно, будут хорошим выбором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...