NLS API为“en-ca”提供错误的长日期

时间:2010-11-09 17:38:49

标签: winapi nls

文化“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

1 个答案:

答案 0 :(得分: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上提交反馈