DateTime.Parse 无法在 Windows Server 2012 上运行

DateTime.Parse not working on Windows Server 2012

我有一个古老而沉重的 windows 应用程序,其中 DateTime.TryParse(string value, out result) 被广泛使用。

下面的代码在 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

但在 Windows Server 2012 R2 Standard 上执行时,上述语句 returns 为假。 看起来像 Win Server 2012 已经打破了 DateTime.TryParse。有趣的是,如果我使用 .netFramework 3.5,那么它适用于所有 OS。但我们使用的是框架 v4.6.2 (VS-2019)。

这是 Microsoft OS 或 .netFramework 4.6 中的错误吗?是否有任何现有的解决方法而不对代码进行任何更改,可能是 .net 框架补丁等。老实说,我很难对与此相关的代码进行任何更改,因为它的使用量超过 1.5k申请。

提前致谢!!!

也许不是答案,但你能在你的 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