C # - Регулярное выражение проверки даты и часа - PullRequest
3 голосов
/ 11 апреля 2010

Я получаю дату и время из файла CSV

The received Date format is  YYYYMMDD (string) (there is no ":" ,"-","/" to 
separate  Year month and date).

The received time format is HH:MM (24 Hour clock).

Я должен проверить оба, чтобы (пример) (i) 000011990 мог быть признан недействительным на дату (ii) недействительным время.

Вопрос в том,

Регулярное выражение является подходящим кандидатом для этого (или) есть ли другой способ достичь это?

Ответы [ 4 ]

9 голосов
/ 11 апреля 2010

Вы ищете DateTime.TryParseExact:

string source = ...;
DateTime date;
if (!DateTime.TryParseExact(source, 
                            "yyyyMMdd", 
                            CultureInfo.InvariantCulture, 
                            DateTimeStyles.None, 
                            out date)) {
    //Error!
}

Вы можете использовать тот же код для проверки времени со строкой формата "HH:mm".

4 голосов
/ 11 апреля 2010

Самое простое решение - использовать

DateTime output;
if(!DateTime.TryParse(yourstring, out output))
{ 
   // string is not a valid DateTime format
}

DateTime.TryParse попытается преобразовать вашу строку в переменную DateTime, но не выдаст исключение в случае сбоя - вместо этого он вернет false, если строка не будет распознана как действительный DateTime.

2 голосов
/ 11 апреля 2010

Я думаю, что лучшим способом было бы использовать класс формата даты, встроенный в C #: DateTime.parse

1 голос
/ 11 апреля 2010

Вы можете использовать один из TryParse методов структуры DateTime. Они вернут false, если не смогут разобрать.

Другой вариант - использовать методы ParseExact, но для них необходимо указать поставщика формата.

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