Разбор даты и времени в текстовом поле - PullRequest
2 голосов
/ 21 июля 2011

У меня есть дата и время в одном простом текстовом поле. Формат значения текстового поля может быть любым, например, ДД / ММ / ГГГГ или ММ / ДД / ГГГГ. Я хочу разобрать это с помощью DateTime.Parse (строка). В настоящее время для некоторых дат это работает, а для других - исключение. Как мне справиться с этим? Как мне убедиться, что независимо от того, какой формат предоставлен, он всегда анализируется правильно (при условии, что он является действительной датой)?

Заранее спасибо:)

EDIT

Поскольку на этот вопрос нет точного ответа, я изменяю свой вопрос, чтобы спросить, как мне преобразовать его в MM / DD / YYYY? Что я должен предоставить в IFormatProvider DateTime.Parse?

Ответы [ 4 ]

4 голосов
/ 21 июля 2011

DateTime должен знать, как анализировать дату, иначе он не будет знать, 5/07/2011 - 5 июля или 7 мая. Не лучше ли использовать элемент управления календаря для устранения этой неоднозначности?

1 голос
/ 26 января 2012

Я пришел сюда, чтобы выяснить, смогу ли я найти лучшее решение, чем мое.Я уже видел некоторые из предложенных здесь решений в другом посте и в гугле.ИМХО лучше работает так:

    DateTime date;
    bool isDate = (DateTime.TryParseExact(txtbxDATETIME.Value, 
                                               "yyyy'/'MM'/'dd",
                                                CultureInfo.InvariantCulture,
                                                DateTimeStyles.None,
                                                out date));
   //possible use:
   DateTime someDATEorVAr =  (isDate) ? date : DateTime.Now;

Надеюсь, кто-нибудь найдет это полезным

1 голос
/ 21 июля 2011

Я предлагаю использовать фиксированный формат. Вы даже можете позволить своим пользователям выбирать формат, который они хотят использовать. Но вам абсолютно необходимо знать формат. Тогда вы можете использовать DateTime.TryParseExact. Например, что будет значить 01/03/2011? Это может быть мм / дд / гггг или дд / мм / гггг. Вы действительно должны быть откровенными об этом.

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

Эта проблема синтаксического анализа может быть решена с помощью варианта TryParse (String, IFormatProvider, DateTimeStyles, DateTime), так что информация о культуре (чаще всего я использую CultureInfo.CurrentCulture) может быть передана ему и, таким образом, устранена неоднозначность.

DateTime.TryParse

Виджай

...