Разница между названиями культур "en-GB" и "en-Us" - PullRequest
0 голосов
/ 11 декабря 2018

Когда я пишу этот код, дата устанавливается на что-то вроде "12/12/2018 20:08", и это нормально

{
     var newCulture = new CultureInfo("en-GB");
     var date = (value as DateTime?)?.ToString(newCulture.DateTimeFormat.ShortDatePattern+" HH:mm", CultureInfo.InvariantCulture);
}

, но когда я меняю название культуры на "en-Us", результатis "12.12.2018 20:08" (неправильный формат, насколько я знаю) - формат возвращаемой даты ShortDatePattern не верен

Я тестирую его на другом рабочем столе, и там он работает правильно с 2 из них.Может быть, есть какая-то зависимость от настроек рабочего стола?Почему форматы даты различны?

1 Ответ

0 голосов
/ 11 декабря 2018

new CultureInfo("en-GB") вызывает ctor с useUserOverride, установленным в true.Это означает, что если в вашей серверной среде есть соответствие для указанной культуры с пользовательскими настройками, они будут использованы вместо стандартных по умолчанию один раз.Итак, чтобы исправить вашу проблему CultureInfo("en-GB", false); или CultureInfo.GetCultureInfo("en-GB") (для кэшированной версии)

Метод GetCultureInfo извлекает кэшированный объект CultureInfo только для чтения.Он обеспечивает лучшую производительность, чем соответствующий вызов конструктора CultureInfo.CultureInfo (String).

Если имя является именем текущей культуры, возвращенный объект CultureInfo не отражает никаких пользовательских переопределений ,Это делает метод подходящим для серверных приложений или инструментов, которые не имеют реальной учетной записи пользователя в системе и которым необходимо эффективно загружать несколько культур.

...