首先,我编辑区域设置并更改语言环境nl-BE
的日期格式以使用yyyy-MM-dd
。
然后在我的ASP.NET代码(Windows 10计算机上为Standard .Net 4.6.1)中,运行以下代码:
CultureInfo.GetCultures(CultureTypes.InstalledWin32Cultures)
结果是带有文化的列表。当我专门查看更改的语言环境(nl-BE)时,会得到以下结果:
这与我在Windows设置中指定的相同,如上图所示,
如果我在同一应用程序中通过名称或LCID搜索此特定语言环境,则不会显示此自定义设置:
有人可以向我解释为什么两者之间有区别吗?
也许还有另一个键可以用来确保得到相同的结果吗?
答案 0 :(得分:2)
CultureInfo
类的构造函数具有一个Boolean
参数useUserOverride
,它指定是否应用为用户配置文件设置的(区域性)设置(转到{ {1}}(在注册表中)。
HKEY_CURRENT_USER\Control Panel\International
public CultureInfo(int culture) : this(culture, true) {} public CultureInfo(int culture, bool useUserOverride) { // ... }
:
一个布尔值,指示是使用用户选择的区域性设置(true)还是使用默认区域性设置(false)。
CultureInfo.GetCultures(CultureTypes types)
(通过CultureData.GetCultures(CultureTypes types)
)使用useUserOverride
(通过构造函数默认值)创建实例。
true
这些文化会有所改变。
GetCultureInfo(int culture)
实例化cultures[i] = new CultureInfo(cultureNames[i]);
(使用GetCurrentInfoHelper
),将CultureInfo
传递给false
:
userUserOverride
这将导致返回retval = new CultureInfo(lcid, false);
,而无需您进行更改。