Die*_*ego 5 c# asp.net-mvc culture cultureinfo datetime-format
我有一个写下这样日期的网站:
CultureInfo cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(c => string.Equals(c.TwoLetterISOLanguageName, MvcApplication.Language));
return string.Concat(date.Day, ".", cultureInfo.DateTimeFormat.GetAbbreviatedMonthName(date.Month));
Run Code Online (Sandbox Code Playgroud)
在这两个我的电脑(Windows 7的Service Pack 1起,西班牙文化)和服务器(Windows Server 2012中,英文化)的MvcApplication.Language是es让我从列表中得到文化是:es-ES.
我希望他们都写相同的字符串(他们有不同的文化,但我没有使用CurrentCulture).但结果是abr在我的电脑和Abr.服务器中.
我试过这个与MvcApplication.Language使用LinqPAD隔离但它仍然不同.我已经打印了各种计算机的数组,AbbreviatedDayNames并且AbbreviatedMonthNames它们各不相同.
我做错了什么或这是预期的行为?如何使其完全独立于Windows /用户文化?
您可以在MSDN 的链接中看到,文化信息在某些 Windows 版本上可能有所不同。
请记住,区域性名称和标识符仅代表可以在特定计算机上找到的区域性子集。Windows 版本或服务包可以更改可用的区域性。应用程序使用 CultureAndRegionInfoBuilder 类添加自定义区域性。用户使用 Microsoft Locale Builder 工具添加自己的自定义区域性。Microsoft Locale Builder 是使用 CultureAndRegionInfoBuilder 类以托管代码编写的。
如果您希望某些格式是静态的,您可以构建自己的 CultureInfo 对象并自定义它的行为,设置您自己的 Date Time format,作为示例