那么, 我想获取文化的默认日期格式。
例如,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
。我需要默认的一个而不是机器上的设置。
答案 0 :(得分:4)
我认为问题在于你正在寻找所需的文化。
这应该为您提供默认的文化设置:
var cultureLanguageTag = CultureInfo.CurrentCulture.IetfLanguageTag;
var defaultCulture = CultureInfo.GetCultureInfoByIetfLanguageTag( cultureLanguageTag );
使用字符串构造一个字符串应该与文化名称一起使用,我不知道它是否应该与IETF标记一起使用,它可能刚刚返回当前文化。
答案 1 :(得分:1)
根据MSDN,CurrentCulture
将通过以下方式之一返回文化:
CultureInfo.DefaultThreadCurrentCulture
。 (请注意,除非您专门设置文化,否则它将始终为null。)GetUserDefaultLocaleName
函数的结果。这将返回您在控制面板中设置的文化。如果您在“控制面板”中更改文化,则可能会在重新启动计算机之前看到更改。
要测试文化是否显示正确的日期,您可以使用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