不支持区域性.参数名称:名称 US 是无效的区域性标识符

本文关键字:区域性 无效 标识符 US 参数 不支持 名称 | 更新日期: 2023-09-27 18:30:19

我尝试使用 ISO-3166 两个字母的国家/地区代码来创建我的 C# 区域性信息对象,以根据区域设置设置我的 datetime 对象的格式。

如果我尝试:

var cultureInfo = new CultureInfo("FR");

如果我尝试,它工作正常:

var cultureInfo = new CultureInfo("US");

它抛出一个异常:

不支持区域性。参数名称:名称 US 无效 区域性标识符。

有趣的是,"US"是有效的ISO-3166国家代码。

不支持区域性.参数名称:名称 US 是无效的区域性标识符

来自CultureInfo(string)构造函数文档;

有关预定义区域性名称的列表,请参阅本地语言 支持 (NLS) API 参考

也来自CultureInfo.TwoLetterISOLanguageName财产

例如,英语的两个字母缩写是 en

没有定义US,但可以使用en(如果您真的必须使用两个字母名称)。所有这些都在ISO 639-1标准中定义。

var cultureInfo = new CultureInfo("en");

因为US不是有效的区域性名称,而 FR 是。CultureInfo的构造函数不接受国家/地区代码作为参数。它需要"区域性名称"。

有关有效的区域性名称,请参阅此 msdn 页中的表。

构造函数CultureInfo参数不是 ISO-3166 代码,而是预定义的区域性名称

来自 MSDN 关于CultureInfo的文章:

有关预定义区域性名称的列表,请参阅本地语言 Go Global 开发人员中心的支持 (NLS) API 参考。

在提到的参考文献中没有us文化,但有en-US,所以你必须使用ut。