CultureInfo(来自同一文化)的实例根据操作系统变化
本文关键字:实例 变化 操作系统 一文 CultureInfo | 更新日期: 2023-09-27 18:10:58
我有一个这样写日期的网站:
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.Language
是es
,所以我从列表中得到的文化是:es-ES
。
我希望他们都写相同的字符串(他们有不同的文化,但我不使用CurrentCulture
)。然而,结果是abr
在我的PC和Abr.
在服务器。
我已经尝试过使用LinqPAD与MvcApplication.Language
隔离,但它仍然不同。我已经打印了AbbreviatedDayNames
和AbbreviatedMonthNames
的数组,它们在每台计算机上都是不同的。
是我做错了什么还是这是预期的行为?我怎样才能使它完全独立于Windows/用户文化?
你可以从MSDN的这个链接中看到,某些windows版本的文化信息可能不同。
请记住,区域性名称和标识符仅表示可在特定计算机上找到的区域性的子集。Windows版本或服务包可以更改可用的区域性。应用程序使用CultureAndRegionInfoBuilder类添加自定义区域性。用户使用Microsoft Locale Builder工具添加自己的自定义区域性。Microsoft Locale Builder是使用CultureAndRegionInfoBuilder类在托管代码中编写的。
如果您希望某些格式是静态的,您可以构建您自己的CultureInfo对象并自定义它的行为,设置您自己的日期时间格式,例如