DateTime.Parse не работает на Windows Server 2012 - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть старое и тяжелое windows приложение, в котором широко используется DateTime.TryParse (строковое значение, результат out).

Приведенный ниже код работает гладко на Windows 7 и Windows 10.

// Ниже делается, когда приложение запускается

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-AU");

var success = DateTime.TryParse("20 02", out result);

// Выше приведен лишь пример одного из способов его использования. Здесь успех верен, а результаты -> 20/02/2020 12:00:00 AM

Но приведенное выше выражение возвращает false при выполнении на Windows Server 2012 R2 Standard. Похоже, что Win Server 2012 сломал DateTime.TryParse . Интересно, что если я использую .netFramework 3.5, то он работает во всех ОС. Но мы находимся на платформе v4.6.2 (VS-2019).

Это ошибка в ОС Microsoft или .netFramework 4.6? Существуют ли обходные пути для этого без внесения каких-либо изменений в код, например, патч. net framework и т. Д. c. Честно говоря, мне будет трудно вносить какие-либо изменения в код, связанный с этим, поскольку его использование в приложении превышает 1,5 тыс. *

Заранее спасибо !!!

1 Ответ

0 голосов
/ 11 апреля 2020

Может быть, не ответ, но можете ли вы попробовать это на своем Windows Server 2012 R2.

foreach (var ci in CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures).OrderBy(ci => ci.Name))
{
    Console.WriteLine("{0} ({1})", ci.Name, ci.EnglishName);
}

Вы культура часть этого списка?

Читать это: https://docs.microsoft.com/en-gb/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c

Или сделайте это: https://docs.microsoft.com/en-us/archive/blogs/shawnste/locale-builder-v2-0-for-windows-8-1server-2012-r2-released

...