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

Culture is not supported. Parameter name: name US is an invalid culture identifier

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

如果我尝试:

var cultureInfo = new CultureInfo("FR");

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

var cultureInfo = new CultureInfo("US");

它抛出一个异常:

Culture is not supported. Parameter name: name US is an invalid culture identifier.

有趣的是 "US" 是一个有效的 ISO-3166 国家/地区代码。

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

来自 MSDN 关于 CultureInfo 的文章:

For a list of predefined culture names, see the National Language Support (NLS) API Reference at the Go Global Developer Center.

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

因为 US 不是有效的区域性名称,而 FR 是。 CultureInfo 的构造函数不接受国家代码作为参数。它期望 "Culture Name".

请参阅此 msdn page 中的 table 以获得有效的文化名称。

来自 CultureInfo(string) constructor 文档;

For a list of predefined culture names, see the National Language Support (NLS) API Reference

也来自CultureInfo.TwoLetterISOLanguageName Property

For example, the two-letter abbreviation for English is en.

没有定义US但是有en(如果你真的必须使用两个字母的名字)你可以使用它。所有这些都在 ISO 639-1 standard.

中定义
var cultureInfo = new CultureInfo("en");