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

时间:2016-01-13 11:40:49

标签: c# .net datetime culture

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

如果我尝试:

var cultureInfo = new CultureInfo("FR");

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

var cultureInfo = new CultureInfo("US");

它引发了异常:

  

不支持文化。参数名称:名称US无效   文化标识符。

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

4 个答案:

答案 0 :(得分:6)

来自CultureInfo(string) constructor文档;

  

有关预定义文化名称的列表,请参阅National Language Support (NLS) API Reference

同样来自CultureInfo.TwoLetterISOLanguageName Property

  

例如,英文的双字母缩写为en

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

var cultureInfo = new CultureInfo("en");

答案 1 :(得分:1)

HtmlUnit构造函数的参数不是ISO-3166代码,而是预定义的文化名称

关于CultureInfo的{​​{3}}文章:

  

有关预定义文化名称的列表,请参阅国家语言   Go全球开发人员中心支持(NLS)API MSDN

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

答案 2 :(得分:1)

因为en-US不是有效的文化名称而FR是。 CultureInfo的构造函数不接受国家/地区代码作为参数。它期待"文化名称"。

请参阅此Reference中的表格,了解有效的文化名称。

答案 3 :(得分:-1)

使用

var cultureInfo = new CultureInfo("en-US");