2012-12-13 20 views
8

嗯, 我正在嘗試獲取文化的默認日期格式。如何查找文化的默認日期格式

例如,en-us有「m/dd/yyyy」,en-uk'd/mm/yyyy'。文化可以是客戶機器上的任何東西。和Dateformat也可以是任何東西。像文化是en-us,但dateformat是dd-MMM-yyyy。

因此,這種情況下,我想將shortDateformatString作爲m/dd/yyyy而不是dd-MMM-yyyy。

我試圖通過這樣做對所有文化:

string _cultureInfo = CultureInfo.CurrentCulture.IetfLanguageTag; 
CultureInfo shortDatefomatString = new CultureInfo(_cultureInfo); 
string old = shortDatefomatString.DateTimeFormat.ShortDatePattern; 

但它總是返回公噸dd-MMM-yyyy。我需要默認的一個,而不是機器上的設置。

回答

3

我相信這個問題是你找回想要的文化的方式。

這應該給你的默認區域性設置:

var cultureLanguageTag = CultureInfo.CurrentCulture.IetfLanguageTag; 
var defaultCulture = CultureInfo.GetCultureInfoByIetfLanguageTag(cultureLanguageTag); 

構建一個與字符串應該與文化名中使用,我不知道是否應該與IETF標籤工作,它在那種情況下,可能剛剛回歸當前的文化。

+0

這工作並給出正確的輸出。默認的dateformat。 – user1899600

1

MSDNCurrentCulture將返回的下列方式之一文化:

  1. 它返回CultureInfo.DefaultThreadCurrentCulture,如果它不爲空。 (請注意,除非您專門設置文化,否則將始終爲空。)
  2. 它返回調用Windows'GetUserDefaultLocaleName函數的結果。這將返回您在控制面板中設置的任何文化。

如果您在控制面板中更改文化,您可能會看到更改,直到重新啓動計算機。

要測試文化是否顯示正確的日期,您可以使用CultureInfo.CreateSpecificCulture("en-US");(用其他國家的文化代碼替換「en-US」)來手動選擇文化,而不是使用系統文化。

+0

CreateSpecificCulture也只給出的當前設置。感謝你的回答。 – user1899600

0

以下似乎適用於我。

Console.WriteLine(CultureInfo.GetCultureInfo("en-us").DateTimeFormat.ShortDatePattern); 
Console.WriteLine(CultureInfo.GetCultureInfo("en-gb").DateTimeFormat.ShortDatePattern); 

輸出: M/d/yyyy的 DD/MM/YYYY

+0

如果當前文化相同,Shortdate格式不同。產量會有所不同。 – user1899600