0

文化“en-ca”的长日期是 MMMM-dd-yy 。这是正确的,我已经通过文档验证了这一点。您可以通过执行以下操作在 .NET 中验证结果。

   Dim culture As CultureInfo = CultureInfo.GetCultureInfo("en-ca")
   MsgBox(culture.DateTimeFormat.LongDatePattern)

我试图弄清楚为什么 NLS API 会返回“MMMMM d, yyyy”作为默认的长日期。这是不正确的。我在这里错过了什么吗?我只是好奇是否有人知道这方面的细节。

NLS API 参考:http: //msdn.microsoft.com/en-us/goglobal/bb896001.aspx

4

1 回答 1

2

这在 .NET 3.5SP1 和 .NET 4.0 之间发生了变化。.NET 3.5 产生 MMMM d,yyyy,与记录的 Vista NLS 值相同。

.NET 4.0 产生 MMMM-dd-yy。与我在 Win7 上使用 GetLocaleInfo() 时得到的相同:

wchar_t buf[256];
GetLocaleInfo(0x1009, LOCALE_SLONGDATE, buf, 256);

我认为 .NET 4.0 现在正在使用 Windows 语言环境信息,而不是依赖自己的表。然而,没有什么变化比文化数据更快。如果您认为这是不正确的,那么您可以在 connect.microsoft.com 提交反馈

于 2010-11-09T19:38:32.207 回答