[英]How to find the default dateformat of a Culture
好吧,我正在嘗試獲取文化的默認日期格式。
例如,en-us有“m / dd / yyyy”,en-uk'd / mm / yyyy'。 文化可以是客戶機器上的任何東西。 和Dateformat也可以是任何東西。 喜歡文化就是我們,但是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
。 我需要默認的一個而不是機器上的設置。
我相信問題在於你正在尋找所需的文化。
這應該為您提供默認的文化設置:
var cultureLanguageTag = CultureInfo.CurrentCulture.IetfLanguageTag;
var defaultCulture = CultureInfo.GetCultureInfoByIetfLanguageTag( cultureLanguageTag );
使用字符串構造一個字符串應該與文化名稱一起使用,我不知道它是否應該與IETF標記一起使用,在這種情況下它可能剛剛返回當前文化。
根據MSDN , CurrentCulture
將通過以下方式之一返回文化:
CultureInfo.DefaultThreadCurrentCulture
。 (請注意,除非您專門設置文化,否則它將始終為null。) GetUserDefaultLocaleName
函數的結果。 這將返回您在控制面板中設置的文化。 如果在“控制面板”中更改文化,可能有可能在重新啟動計算機之前看不到更改。
要測試文化是否顯示正確的日期,您可以使用CultureInfo.CreateSpecificCulture("en-US");
手動選擇文化而不是使用系統培養CultureInfo.CreateSpecificCulture("en-US");
(將“en-US”替換為其他國家的文化代碼)。
以下似乎對我有用。
Console.WriteLine(CultureInfo.GetCultureInfo("en-us").DateTimeFormat.ShortDatePattern);
Console.WriteLine(CultureInfo.GetCultureInfo("en-gb").DateTimeFormat.ShortDatePattern);
輸出:M / d / yyyy dd / MM / yyyy
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.