Я работаю над глобализацией в своем текущем проекте, и я столкнулся с любопытным поведением.Я работаю в Windows 7 с установленным англо-американским языком, а мое приложение работает в .NET 3.5.
С учетом следующего фрагмента:
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
или подобное, но после того, как я запустил Ilspy, я не увидел ничего подобного.Я хотел показать тот же список, который отображается на панели управления, поэтому был удивлен, когда форматы вышли разными.Я полагал, что список форматов будет исходить от ОС и не будет отличаться в разных версиях.