我尝试使用ISO-3166双字母国家代码来创建我的C#文化信息对象,以根据区域设置格式化我的 datetime 对象 .
datetime
如果我尝试:
var cultureInfo = new CultureInfo("FR");
它工作正常,如果我尝试:
var cultureInfo = new CultureInfo("US");
它引发了一个异常:
不支持文化 . 参数名称:name US是无效的区域性标识符 .
有趣的是,“US”是一个有效的ISO-3166国家代码 .
来自CultureInfo(string) constructor文件;
有关预定义文化名称的列表,请参阅本地语言支持(NLS)API参考
也来自CultureInfo.TwoLetterISOLanguageName Property
例如,英文的双字母缩写是en .
没有定义 US 但是 en (如果你真的必须使用两个字母的名字)你可以使用它 . 所有这些都在ISO 639-1 standard中定义 .
US
en
var cultureInfo = new CultureInfo("en");
因为 US 不是有效的文化名称而FR是 . CultureInfo 's constructor doesn' t接受国家/地区代码作为参数 . 它期待"Culture Name" .
有关有效的区域性名称,请参阅此msdn page中的表格 .
CultureInfo 构造函数的参数不是ISO-3166代码,而是预定义的文化名称
CultureInfo
来自MSDN关于 CultureInfo 的文章:
有关预定义文化名称的列表,请参阅Go Global开发人员中心的国家语言支持(NLS)API参考 .
在提到的参考文献中没有 us 文化,但有 en-US ,所以你必须使用ut .
us
en-US
使用
var cultureInfo = new CultureInfo("en-US");
4 回答
来自CultureInfo(string) constructor文件;
也来自CultureInfo.TwoLetterISOLanguageName Property
没有定义
US
但是en
(如果你真的必须使用两个字母的名字)你可以使用它 . 所有这些都在ISO 639-1 standard中定义 .因为
US
不是有效的文化名称而FR是 . CultureInfo 's constructor doesn' t接受国家/地区代码作为参数 . 它期待"Culture Name" .有关有效的区域性名称,请参阅此msdn page中的表格 .
CultureInfo
构造函数的参数不是ISO-3166代码,而是预定义的文化名称来自MSDN关于
CultureInfo
的文章:在提到的参考文献中没有
us
文化,但有en-US
,所以你必须使用ut .使用