Как я могу получить дату и время из этой строки «25.01.1955»?

У меня есть следующий код:

Dim dtDoM As Nullable(Of DateTime)
If (txtMarriageDate.Text.Trim = "") Then
            dtDoM = Nothing
        Else

            dtDoM = DateTime.ParseExact(txtMarriageDate.Text.Trim + " 00:00:00", "dd/MM/yyyy hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture)
            'dtDoM = Convert.ToDateTime(txtMarriageDate.Text)
        End If

В закомментированном разделе я получал FormatException «Строка не распознана как дата-время», а в новом коде я получаю «System.FormatException = {» DateTime, представленный строкой, не поддерживается в календаре System.Globalization.GregorianCalendar». }"

РЕДАКТИРОВАТЬ: Ответил. Не могу поверить, что я проглядел это.


person tsdexter    schedule 17.04.2012    source источник


Ответы (3)


Ваша дата (25.01.1955) имеет формат MM/dd/yyyy, вы используете dd/MM/yyyy в строке формата.

Попробуйте использовать это: "MM/dd/yyyy hh:mm:ss"

person wkl    schedule 17.04.2012
comment
О боже. Я ненавижу работать с чужим кодом. Не могу поверить, что я этого не заметил. - person tsdexter; 17.04.2012

Я думаю, что у вас неправильная строка формата. Вы хотите "MM/dd/yyyy hh:mm:ss", судя по вашим примерам.

person mgnoonan    schedule 17.04.2012
comment
Спасибо. Не могу поверить, что я проглядел это. Любая идея, почему это не работает? 'dtDoM = Convert.ToDateTime(txtMarriageDate.Text) - person tsdexter; 17.04.2012
comment
Если вход правильный, он должен работать. Обычно вам нужно убедиться, что входная строка отформатирована именно так, как вы думаете, поэтому я предпочитаю подход ParseExact. - person mgnoonan; 17.04.2012

Вы перепутали день и месяц. Это будет работать:

dtDoM = DateTime.ParseExact(txtMarriageDate.Text.Trim + " 00:00:00", "MM/dd/yyyy hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture)
person Maciej    schedule 17.04.2012