DateTime.ParseExact Не распознаёт дату

Получаю ошибку: String '28 авг 2022' was not recognized as a valid DateTime."

DateTime DateTimeCreatedOrder = DateTime.ParseExact("28 авг 2022", "dd MMM yyyy", CultureInfo.CurrentCulture);

Причём пробовал изначально в тестовом проекте (.NET Framework 4.8) всё работало, точно та же строчка. В основном (.NET 6.0) выдаёт исключение.


Ответы (1 шт):

Автор решения: Kurama

Потому что в .NET6 другие настройки культур, там сокращения имеют логичную точку в конце (авг.).

Все это можно посмотреть (как и изменить) в culture.DateTimeFormat.AbbreviatedMonthGenitiveNames и culture.DateTimeFormat.AbbreviatedMonthNames, где culture - это нужная культура, в вашем случае var culture = new CultureInfo("ru-RU");.

Собственно, у вас два варианта:

  1. Ставить точку в строке, которую парсите.
  2. Менять культуру (например culture.DateTimeFormat.AbbreviatedMonthGenitiveNames = culture.DateTimeFormat.AbbreviatedMonthNames.Select(x => x.TrimEnd('.')).ToArray();).

EvgeniyZ

→ Ссылка