gpt4 book ai didi

c# - 为什么 DateTimeFormatInfo.GetAllDateTimePatterns 在不同的 .NET 版本中返回不同的结果?

转载 作者:行者123 更新时间:2023-11-30 14:37:30 24 4
gpt4 key购买 nike

我正在我当前的项目中做一些全局化工作,我遇到了一个奇怪的行为。我在 Windows 7 上运行,只安装了美国英语,我的应用程序在 .NET 3.5 上运行。

给定以下代码段:

var culture = new CultureInfo("zh-CN", true);
var formats = culture.GetAllDateTimePatterns('D');

在 .NET 4 下,返回以下格式:

    yyyy'年'M'月'd'日'
yyyy'年'M'月'd'日',dddd
dddd,yyyy'年'M'月'd'日'

这就是控制面板中的日期和时间格式对话框显示的内容(我的目标)。

但在 .NET 3.5(及更早版本)上返回以下内容:

   yyyy'年'M'月'd'日'
yyyy-MM-dd
dddd, yyyy-MM-dd
dddd, yyyy'年'M'月'd'日'

我去检查了使用 EnumDateFormatsExEx 返回的值(和更早的版本),它与 .NET 4 的结果相匹配。

差异并不困扰我;我的问题是为什么结果不同?我假设底层实现正在调用 EnumDateFormatsExEx 或类似的,但是在我启动 Ilspy 之后我没有看到任何东西种类。我想显示出现在控制面板中的相同列表,所以当格式不同时我很惊讶。我认为格式列表将来自操作系统,并且在运行时版本之间没有区别。

最佳答案

.NET 4 中的相关更改是 documented here .突出显示:

One of the main globalization features of the .NET Framework 4 is the ability to provide the most recent information where available. The oldest globalization information that this release will provide is the data available at shipping time, and only when running on Windows prior to Windows 7. When running on Windows 7 and later releases, the globalization information will be retrieved directly from the operating system, which means that customers will get the current globalization information when upgrading to new Windows. Customers running Windows 7 and later versions will see a unified globalization experience for both native (Win32) and managed (.NET) applications.

Because of the ever-changing world, globalization information is subject to change at any time; developers should not expect the values of globalization properties to persist between releases, or even for the same release of the .NET Framework. This is not entirely new behavior for the .NET Framework users. The properties of the Windows-Only-Cultures which were supported since .NET Framework 2 could have different values when running on different versions of Windows

关于c# - 为什么 DateTimeFormatInfo.GetAllDateTimePatterns 在不同的 .NET 版本中返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com