Разбор простого DateTime - PullRequest
       5

Разбор простого DateTime

9 голосов
/ 24 августа 2010
DateTime dt = DateTime.ParseExact("1122010", "Mddyyyy", System.Globalization.CultureInfo.CurrentCulture);

Выдает это исключение: строка не была распознана как допустимый DateTime.

Я уверен, что это отсутствие ведущих 0 в месяце.Что такое правильная строка формата?

Ответы [ 3 ]

12 голосов
/ 24 августа 2010

Я предлагаю использовать формат "MMddyyyy" и убедиться, что ваш входной параметр содержит не менее 8 символов.Пример:

DateTime dt = DateTime.ParseExact("1122010".PadLeft(8, '0'), "MMddyyyy", System.Globalization.CultureInfo.CurrentCulture);

Если вы используете источник данных, в котором за месяц пропущена ведущая цифра 0, это добавит его при необходимости.

4 голосов
/ 24 августа 2010

Проблема в том, что вы не предоставляете ParseExact достаточно информации для работы.

«М» означает месяц с 1 или 2 цифрами. Но ваша строка начинается с "1122". Это 12 января или 22 ноября?

Единственное решение, как показывает Энтони, это заполнить 0, когда это необходимо.

1 голос
/ 24 августа 2010

Одна строка формата «M» недопустима, поскольку не все месяцы могут быть однозначно представлены одной цифрой или символом. Как ранее предлагалось, вам придется использовать «MMddyyyy» и дополнять левую строку, когда это необходимо.

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