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

时间:2012-12-13 02:10:51

标签: c# culture currentculture

那么, 我想获取文化的默认日期格式。

例如,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。我需要默认的一个而不是机器上的设置。

3 个答案:

答案 0 :(得分:4)

我认为问题在于你正在寻找所需的文化。

这应该为您提供默认的文化设置:

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

使用字符串构造一个字符串应该与文化名称一起使用,我不知道它是否应该与IETF标记一起使用,它可能刚刚返回当前文化。

答案 1 :(得分:1)

根据MSDNCurrentCulture将通过以下方式之一返回文化:

  1. 如果它不为空,则返回CultureInfo.DefaultThreadCurrentCulture。 (请注意,除非您专门设置文化,否则它将始终为null。)
  2. 返回调用Windows GetUserDefaultLocaleName函数的结果。这将返回您在控制面板中设置的文化。
  3. 如果您在“控制面板”中更改文化,则可能会在重新启动计算机之前看到更改。

    要测试文化是否显示正确的日期,您可以使用CultureInfo.CreateSpecificCulture("en-US");手动选择文化而不是使用系统文化(将“en-US”替换为其他国家/地区的文化代码)。

答案 2 :(得分:0)

以下似乎对我有用。

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

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