OS和.NET版本上的CurrentUICulture.DateTimeFormat是否不同?

时间:2015-06-19 18:50:15

标签: .net datetime

我在两台不同的PC上运行了以下代码

string info = string.Format("CLR Ver. {0}, Culture Name: {1},  ShortDatePattern: {2}", Environment.Version, Thread.CurrentThread.CurrentUICulture.DisplayName, Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern);

在带有.NET 3.5的Windows Server 2008 R2上,这是info

的值
  

CLR Ver。 2.0.50727.5485,文化名称:英语(加拿大),   ShortDatePattern:dd / MM / yyyy

但是,在带有.NET 4.5的Windows Server 2012上,值为

  

CLR Ver。 4.0.30319.34209,文化名称:英语(加拿大),   ShortDatePattern:yyyy-MM-dd

我想知道为什么CurrentUICulture.DateTimeFormat依赖于.NET版本?这是.NET4.5中的重大变化吗?

1 个答案:

答案 0 :(得分:1)

从.NET 4.0开始,en-CA的默认短日期格式已更改,这是正确的。你可以自己测试一下:

Console.WriteLine(new CultureInfo("en-CA").DateTimeFormat.ShortDatePattern);

在.NET 2运行时(框架2.0 / 3.x)上运行将提供"dd/MM/yyyy"。在.NET 4运行时(框架4.x)上运行将提供"yyyy-MM-dd"

MSDN文档中描述了这一点:What's New in Globalization and Localization。示例表中列出了一些文化,但还有许多其他文化也已更新,包括en-CA

此外,您可能需要检查Windows控制面板中的日期/时间设置。可能已经定制了其中一台机器的设置。这将贯穿当前文化的格式设置。

此外,日期/时间格式更改将通过CurrentCultureCurrentUICulture用于通过.resx文件查找资源字符串。