NLS API дает неправильную длинную дату для «en-ca» - PullRequest
0 голосов
/ 09 ноября 2010

Длинная дата для культуры "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 Reference: http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx

1 Ответ

2 голосов
/ 09 ноября 2010

Это изменилось между .NET 3.5SP1 и .NET 4.0. .NET 3.5 производит MMMM d, yyyy, так же, как задокументированное значение Vista NLS.

.NET 4.0 производит MMMM-dd-yy. То же, что я получаю, когда использую GetLocaleInfo () в Win7 с:

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

Я думаю, что .NET 4.0 теперь использует информацию о локали Windows, а не полагается на свои собственные таблицы. Тем не менее, ничего не меняется так быстро, как данные культуры. Если вы считаете, что это неверно, вы можете оставить отзыв на connect.microsoft.com

...