簡體   English   中英

如何查找Culture的默認日期格式

[英]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標記一起使用,在這種情況下它可能剛剛返回當前文化。

根據MSDNCurrentCulture將通過以下方式之一返回文化:

  1. 如果它不為null,則返回CultureInfo.DefaultThreadCurrentCulture (請注意,除非您專門設置文化,否則它將始終為null。)
  2. 它返回調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM