5

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

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)。但是结果abr在我的电脑和Abr.服务器中。

我已经尝试过将其与MvcApplication.Language使用LinqPAD隔离,但它仍然不同。我已经打印了 and 的数组,AbbreviatedDayNames它们AbbreviatedMonthNames在每台计算机中都不同。

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

4

1 回答 1

1

您可以在 MSDN 的此链接中看到,文化信息在某些 Windows 版本上可能会有所不同。

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

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

于 2013-08-07T20:38:53.080 回答