2013-04-26 64 views
5

我有一个网站,它这样写日期:实例改变基于OS

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

在这两个我的电脑(Windows 7的Service Pack 1起,西班牙文化)和服务器(Windows Server 2012,英文版)MvcApplication.Languagees,所以我从列表中得到的文化是:es-ES

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

我试过这个从MvcApplication.Language分离使用LinqPAD但它仍然不同。我已经打印了AbbreviatedDayNamesAbbreviatedMonthNames的阵列,并且它们在每台计算机中都不相同。

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

回答

1

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

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

如果你想要一些格式是静态的,你可以建立自己的CultureInfo对象和定制它的行为,设置your own Date Time format,作为一个例子