.net - CultureInfo.GetCultures 为特定文化返回不同的 DateTimeSettings,而不是按名称或 LCID 使用 GetCultureInfo
问题描述
首先,我编辑我的区域设置并更改nl-BE
要使用的语言环境的日期格式yyyy-MM-dd
。
然后在我的 ASP.NET 代码(Windows 10 机器上的标准 .Net 4.6.1)中运行以下代码:
CultureInfo.GetCultures(CultureTypes.InstalledWin32Cultures)
其结果是一个包含文化的列表。当我专门查看我更改的语言环境(nl-BE)时,我得到以下结果:
这与我在 Windows 设置中指定的相同,如上图所示,看起来不错。
如果我在同一应用程序中按名称或 LCID 搜索此特定语言环境,则不会显示此自定义设置:
有人可以向我解释为什么两者之间存在差异吗?
是否有另一个密钥可以用来确保获得相同的结果?
解决方案
该类的构造函数CultureInfo
有一个Boolean
参数,该参数useUserOverride
指定是否应用您为用户配置文件设置的(区域)设置(HKEY_CURRENT_USER\Control Panel\International
位于注册表中)。
public CultureInfo(int culture) : this(culture, true) {}
public CultureInfo(int culture, bool useUserOverride)
{
// ...
}
useUserOverride
:
一个布尔值,表示是使用用户选择的文化设置 (true) 还是默认文化设置 (false)。
CultureInfo.GetCultures(CultureTypes types)
(通过)使用(通过构造函数的默认值) CultureData.GetCultures(CultureTypes types)
创建实例。true
cultures[i] = new CultureInfo(cultureNames[i]);
所以这些文化有你的变化。
GetCultureInfo(int culture)
实例化一个CultureInfo
(使用GetCurrentInfoHelper
)传递false
给userUserOverride
:
retval = new CultureInfo(lcid, false);
这会导致CultureInfo
没有您的更改而返回。
推荐阅读
- hyperlink - 如何在 powerpoint 幻灯片中超链接 .docx 或 .pdf 文件的特定页面
- javascript - CSS 未应用于使用 JS 脚本在页面中动态添加的 HTML 内容
- amazon-web-services - AWS - 仅在某些端点上看似随机的 502 错误
- html - CSS 多输入元素
- podio - Podio GET 项目上的 HTTP 500
- database - 根据表2的相似列更新表1的列,Sqlite3
- python - Django 应用程序停止启动
- javascript - 将所有 html 样式属性替换为 React 兼容样式
- python - pipenv 安装 Django 失败
- python - PYINSTALLER 未能执行脚本(使用了 pynput)