Проверка времени в c # - PullRequest
       4

Проверка времени в c #

0 голосов
/ 28 июля 2011

У нас есть общее текстовое поле поиска, и пользователь может искать любую вещь. Мне нужно проверить DateTime и особенно часть времени, и пользователь может ввести любую вещь
docdate eq 1/1/2000 33: 28: 00
docdate eq 1/1/2000 13:28 am
В вышеупомянутых запросах мне нужно проверить часть даты, зная, что столбец docdate является действительной датой. Что может быть лучшим способом достичь этого.

Ответы [ 3 ]

2 голосов
/ 28 июля 2011

Похоже, DateTime.TryParse это то, что вы ищете.

Он попытается проанализировать дату (возвращает true, если она действительна, false если нет) и предоставит значение System.DateTime в случае успеха. Одна из перегрузок позволяет указать конкретные форматы, которые вы хотите поддерживать.

Метод TryParse предпочтительнее разбора строк / регулярных выражений, поскольку он:

  • Обрабатывает различные правила даты / времени (количество дней в месяце, високосные годы и т. Д.) И форматы для нескольких культур
  • Поддерживает все значения даты / времени, которые могут быть представлены объектом System.DateTime
  • Предоставляет объект System.DateTime для допустимых дат, который, вероятно, необходим в другом месте вашего кода
2 голосов
/ 28 июля 2011

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

DateTime parsedDate;
DateTime.TryParseExact("1/1/2000 3:28:00", "M/d/yyyy H:mm", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None, out d);

Поиграйте со строкой формата (2-й параметр), чтобы проверить различные возможные форматы (например: с / без am / pm, с и без миллисекунд ...)

0 голосов
/ 28 июля 2011

Вы можете использовать RegularValidation. Вы можете найти соответствующее выражение из здесь

(?n:^(?=\d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(?(.0?2)(?=.{3,4}(1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00))|0?[1-9]|1\d|2[0-8])(?<sep>[/.-])(?<month>0?[1-9]|1[012])\2(?<year>(1[6-9]|[2-9]\d)\d{2})(?:(?=\x20\d)\x20|$))?(?<time>((0?[1-9]|1[012])(:[0-5]\d){0,2}(?i:\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...