2016-01-13 74 views
2

我試圖使用ISO-3166兩字母國家代碼創建我的C#文化信息對象,以根據語言環境對我的datetime對象進行格式設置。不支持文化。參數名稱:名稱US是無效的文化標識

如果我嘗試:

var cultureInfo = new CultureInfo("FR"); 

它工作正常,如果我嘗試:

var cultureInfo = new CultureInfo("US"); 

它拋出一個異常:不支持

文化。參數名稱:name US是一個無效的 文化標識符。

有趣的是,「美國」是一個有效的ISO-3166國家代碼。

+0

檢查[文化的完整列表](http://www.csharp-examples.net/culture-names/) –

+0

你的實際問題是什麼?如何解決它?如何從國家代碼映射到文化? ...? –

+0

是的。我想知道如何將ISO-3166國家代碼映射到C#文化 –

回答

3

CultureInfo(string) constructor文檔;

對於預定義區域性名稱的列表,請參閱National Language Support (NLS) API Reference

而且從CultureInfo.TwoLetterISOLanguageName Property

例如,對於英語的兩個字母的縮寫是en

沒有US定義,但有en(如果你真的使用兩個字母的名字),你可以使用它。所有這些定義在ISO 639-1 standard

var cultureInfo = new CultureInfo("en"); 
+0

好。所以基本上CultureInfo構造函數不直接接受ISO-3166國家代碼... –

+1

@GianlucaGhettini它可以接受其中的一些,但不是全部。這些是不同的標準。 –

+0

好的謝謝..所以我需要創建mu自己的映射,不是嗎? –

-1

使用

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

語言或文化這個解決方案是*不*使用ISO-3166國家代碼作爲參數 –

1

論證CultureInfo構造是不是關於CultureInfo一個ISO-3166的代碼,但預定義的文化名

MSDN文章:

對於預定義的文化列表名稱,請參閱Go Global開發人員中心的國家語言 支持(NLS)API Reference

在參考中提到沒有us文化,但有en-US,所以你必須使用ut。

1

因爲US不是有效的文化名稱,而FR是。 CultureInfo的構造函數不接受國家代碼作爲參數。它期待着「文化名稱」。

請參閱此msdn page中的表以獲取有效的文化名稱。

相關問題