CultureInfo(来自同一文化)的实例基于OS的变化

时间:2013-04-26 15:53:42

标签: c# asp.net-mvc cultureinfo datetime-format culture

我有一个写下这样日期的网站:

CultureInfo cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(c => string.Equals(c.TwoLetterISOLanguageName, MvcApplication.Language));
return string.Concat(date.Day, ".", cultureInfo.DateTimeFormat.GetAbbreviatedMonthName(date.Month));

在我的PC(Windows 7,Service Pack 1,西班牙文化)和服务器(Windows Server 2012,英语文化)中,MvcApplication.Languagees,因此我从列表中获得的文化是:es-ES

我希望他们都写相同的字符串(他们有不同的文化,但我没有使用CurrentCulture)。但是,我的PC中的结果为abr,服务器中的结果为Abr.

我使用LinqPAD尝试将其与MvcApplication.Language隔离,但仍然不同。我打印了AbbreviatedDayNamesAbbreviatedMonthNames的数组,每台计算机都有不同的数据。

我做错了什么或这是预期的行为?如何使其完全独立于Windows /用户文化?

1 个答案:

答案 0 :(得分:1)

您可以在MSDN的this link中看到,某些Windows版本的文化信息可能有所不同。

  

请记住,文化名称和标识符仅代表可在特定计算机上找到的文化子集。 Windows版本或Service Pack可以更改可用的文化。应用程序使用CultureAndRegionInfoBuilder类添加自定义文化。用户使用Microsoft Locale Builder工具添加自己的自定义文化。 Microsoft Locale Builder使用CultureAndRegionInfoBuilder类以托管代码编写。

如果您希望某些格式是静态的,您可以构建自己的CultureInfo对象并自定义它的行为,设置your own Date Time format作为示例