我有一个网站,上面写着这样的日期:
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 (Windows7,Service Pack1,西班牙语文化)和服务器(Windows Server2012,英语文化)中,MvcApplication.Language都是es,所以我从列表中得到的文化是:es-ES。
我希望他们都写相同的字符串(他们有不同的文化,但我没有使用CurrentCulture)。然而,结果在我的PC上是abr,在服务器上是Abr.。
我尝试过使用LinqPAD从MvcApplication.Language中隔离出来,但它仍然是不同的。我打印了AbbreviatedDayNames和AbbreviatedMonthNames数组,它们在每台计算机上都是不同的。
是我做错了什么,还是这是预期的行为?我怎么做才能使它完全独立于Windows /用户文化?
发布于 2013-08-08 04:38:53
你可以在MSDN的this link中看到,在某些windows版本中,区域性信息可能有所不同。
请记住,区域性名称和标识符仅表示可在特定计算机上找到的区域性的子集。Windows版本或service packs可以更改可用的区域性。应用程序使用CultureAndRegionInfoBuilder类添加自定义区域性。用户使用Microsoft区域设置生成器工具添加自己的自定义区域性。Microsoft Locale Builder是使用CultureAndRegionInfoBuilder类以托管代码编写的。
如果您希望某些格式是静态的,您可以构建自己的CultureInfo对象并定制它的行为,例如设置your own Date Time format
https://stackoverflow.com/questions/16240525
复制相似问题