我正在进行一些与全球化相关的工作,但在项目中遇到了一些奇怪的行为。我使用安装了英语-US语言包的Windows 7操作系统,并且我的应用程序运行在.NET 3.5上。
以下是代码片段:
在.NET 4下,返回以下格式:
这就是控制面板中日期和时间格式对话框显示的内容(我所追求的)。但在.NET 3.5(以及更早版本)中,返回以下内容:
我查看了使用EnumDateFormatsExEx(以及早期版本)返回的值,并且与.NET 4的结果相匹配。
不同之处并不困扰我;我的问题是为什么结果不同?我认为底层实现正在调用
以下是代码片段:
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
或类似的方法,但是在我启动Ilsyp后,我没有看到任何这样的内容。我想显示与控制面板中相同的列表,因此当格式不同时,我感到惊讶。我认为格式列表应该来自操作系统,并且不会因运行时版本而异。