C# Парсинг DateTime Не удалось преобразовать строку в DateTime - PullRequest
0 голосов
/ 15 апреля 2020

Я проследил за выводом строки моей переменной даты и проанализировал в соответствии с форматом, но все еще обнаружил исключение формата.

Могу ли я узнать, что мне следует изменить?

string DOB = retrieved.Entities[i].GetAttributeValue<AliasedValue>("Contact.birthdate").Value.ToString();
//output: 4/13/2018 12:00:00AM

DateTime DOB_formatted = DateTime.ParseExact(DOB, "MM/dd/yyyy", null);
//System.FormatException

Разрешение: конвертировать объект в DateTime

DateTime DOB_formatted = Convert.ToDateTime(retrieved.Entities[i].GetAttributeValue<AliasedValue>("Contact.birthdate").Value);

1 Ответ

3 голосов
/ 15 апреля 2020

ParseExact() требует идеального соответствия. Для строки формата MM/dd/yyyy потребуется 04/13/2018, но значение 4/13/2018 12:00:00AM. Вы хотите M/d/yyyy hh:mm:sstt, и вы должны подтвердить, что дневные значения не имеют начальных нулей. Также существует перегрузка, которая принимает массив строк формата , если вы не можете доверять источнику данных, чтобы он был согласованным.

Наконец, согласно комментариям, тип времени компиляции Value - это Object. Но как насчет времени выполнения? Есть все еще хороший шанс, что тип времени выполнения равен уже a DateTime, и все, что вам нужно сделать, это привести его. Из-за проблем интернационализации / культуры преобразование в строку, а затем повторный анализ обратно в DateTime удивительно дорого. Избегание этих преобразований сэкономит компьютеру тонну работы и действительно поможет повысить производительность.

...