.NET: Есть ли какие-либо различия между InvariantCulture и en-США?

Учитывая следующие две культуры:

CultureInfo c1 = InvariantCulture;
CultureInfo c2 = new CultureInfo("en-US");

и я должен был исследовать каждую информацию, характерную для обеих культур, например:

c1.DateTimeInfo.ShortDatePattern;
c2.DateTimeInfo.ShortDatePattern;

c1.DateTimeInfo.LongDatePattern;
c2.DateTimeInfo.LongDatePattern;

c1.NumberFormat.CurrencyDecimalDigits;
c2.NumberFormat.CurrencyDecimalDigits;

c1.TextInfo.IsRightToLeft;
c2.TextInfo.IsRightToLeft;

Я нашел бы какие-либо различия?

Другими словами, InvariantCulture, во всех целях, идентичных культуре "en-США"?

25
задан Ian Boyd 24 February 2010 в 20:35
поделиться

5 ответов

Да.

Например: InvariantCulture использует международный символ валюты: «¤», а не знак доллара: «$» при форматировании валюты.

Однако по большей части они очень похожи.

Изменить : Список различий между en-US и Инвариант :

                          en-US                        Invariant
=====================     ==================           ==================
Number                    123456.78                    +123456.78
Currency Symbol           $                            ¤
Currency                  $123456.78                   ¤123456.78
Short Date                1/11/2012                    01/11/2012
Time                      10:36:52 PM                  22:36:52
Metric                    No                           Yes
Long Date                 Wednesday, January 11, 2012  Wednesday, 11 January, 2012
Year Month                January, 2012                2012 January
33
ответ дан 28 November 2019 в 21:11
поделиться

Существуют некоторые фактические различия ( проверьте оба значения в окне Watch), но наиболее существенным различием является intent . InvariantCulture показывает ваше намерение проанализировать некоторые данные независимым от культуры способом, если оно связано с английским языком, тогда как en-US объявляет ваше фактическое намерение анализировать данные в соответствии с особенностями США.

4
ответ дан 28 November 2019 в 21:11
поделиться

Ну, если вы посмотрите, что может получиться из вашего фрагмента кода:

CultureInfo c1 = CultureInfo.InvariantCulture;
CultureInfo c2 = new CultureInfo("en-US");

Console.WriteLine( c1.DateTimeFormat.ShortDatePattern.ToString());
Console.WriteLine( c2.DateTimeFormat.ShortDatePattern.ToString());

Console.WriteLine( c1.DateTimeFormat.LongDatePattern.ToString());
Console.WriteLine( c2.DateTimeFormat.LongDatePattern.ToString());

Console.WriteLine( c1.NumberFormat.CurrencyDecimalDigits.ToString());
Console.WriteLine( c2.NumberFormat.CurrencyDecimalDigits.ToString());

Console.WriteLine( c1.TextInfo.IsRightToLeft.ToString());
Console.WriteLine( c2.TextInfo.IsRightToLeft.ToString());

Вы увидите некоторые различия:

MM/dd/yyyy
M/d/yyyy
dddd, dd MMMM yyyy
dddd, MMMM dd, yyyy
2
2
False
False

И только подумайте, когда США потеряют хребет и решат начать использовать европейский стиль дат или перейдут на метрическую систему (метрическая система - это инструмент дьявола! В моей машине сорок прутьев до свиной головы, и это мне нравится!), InvariantCulture может просто спокойно и плавно оставаться такой, какая она есть. Так что все те даты, которые вы спрятали в базе данных в текстовом виде с помощью InvariantCulture, будут продолжать работать...

3
ответ дан 28 November 2019 в 21:11
поделиться

Краткий ответ да. InvariantCulture - это то, что он говорит, а не конкретная культура. Это английский язык, но не конкретный регион

, вы можете прочитать об этом здесь: MSDN

1
ответ дан 28 November 2019 в 21:11
поделиться

Я знаю, что у них разные CultureName и LCID (см. этот список ) .

Кроме того, символы валюты разные - ¤ для InvariantCulture и $ для en-US.

Из InvariantCulture :

Он используется практически в любом методе пространства имен Globalization, который требует культуры.

Предполагая, что по большей части они взаимозаменяемы. Однако в именах указывается намерение, поэтому вам следует подумать об этом при использовании CultureInfo .

0
ответ дан 28 November 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: