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

7
我会尽力为您翻译中文,以下是涉及IT技术的内容。您需要使用ISO-3166两位字母国家代码来创建C#区域信息对象,以便根据当地语言环境格式化datetime对象。
如果我尝试:
var cultureInfo = new CultureInfo("FR");

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

var cultureInfo = new CultureInfo("US");

出现异常:

不支持该文化。参数名称:name,US是无效的文化标识符。

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


1
请查看文化列表 - Alexandru Chichinete
你的实际问题是什么?如何修复它?如何从国家代码映射到文化?...? - James Thorpe
是的。我想知道如何将ISO-3166国家代码映射到C#文化中。 - Gianluca Ghettini
1
@GianlucaGhettini 没有内置的映射。您需要自己创建。 - Soner Gönül
潜在的重复问题? - James Thorpe
fr表示法语,而不是法国 en表示英语 en-gb表示英国英语 en-au表示澳大利亚英语 en-us表示美国英语 没有名为“us”的语言或文化。 - Jens Meinecke
3个回答

10

好的。基本上,CultureInfo构造函数不直接接受ISO-3166国家代码... - Gianluca Ghettini
1
@GianlucaGhettini 它 可以 接受其中一些,但 不是 所有的。它们是不同的标准。 - Soner Gönül
@GianlucaGhettini 是的。你可以自己创建 KeyValuePair<string, string> 作为例子。 - Soner Gönül
好的,谢谢。答案已经被接受了。您有什么建议在哪里可以找到这样的映射吗?我的意思是,我不敢相信我是第一个遇到这样的问题的人... - Gianluca Ghettini

1
CultureInfo构造函数的参数不是ISO-3166代码,而是预定义的区域设置名称。
根据MSDN关于CultureInfo的文章:
“有关预定义区域设置名称的列表,请参见全球化开发中心的国家语言支持(NLS)API Reference。”
在提到的参考文献中没有us区域设置,但有en-US,因此必须使用它。

1
因为US不是一个有效的文化名称,而FR是。CultureInfo的构造函数不接受国家代码作为参数。它需要"文化名称"。
请参考msdn页面中的表格获取有效的文化名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接