如何找到一个文化缺省的日期格式(How to find the default dateformat

2019-08-04 00:15发布

嗯,我试图让文化的默认日期格式。

例如EN-US具有 “M /日/年”,EN-UK 'd /月/年'。 文化可能是在客户端计算机的任何信息。 和日期格式也可以是任何东西。 像文化是EN-US但日期格式为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;

但它总是返回MT的dd-MMM-yyyy 。 我需要一个默认不是机器上的集中。

Answer 1:

我相信这个问题是你获取所需的文化方式。

这应该给你的默认区域性设置:

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

用字符串构建一个应该与文化名中使用,我不知道是否应该与IETF标签工作,它可能只是在这种情况下返回当前文化。



Answer 2:

根据MSDN , CurrentCulture将返回文化的下列方式之一:

  1. 它返回CultureInfo.DefaultThreadCurrentCulture如果它不为空。 (请注意,除非你专门设置的文化中,这将永远是空的。)
  2. 它返回调用Windows的结果GetUserDefaultLocaleName功能。 这将返回任何文化你控制面板中设置。

这是可能的,如果更改控制面板中的文化,你不会看到的变化,直到您重新启动计算机。

为了检验文化是否显示正确的日期,您可以手动选择一种文化,而不是通过使用系统文化CultureInfo.CreateSpecificCulture("en-US"); (与其他国家的文化的代码来替换“EN-US”)。



Answer 3:

以下似乎为我工作。

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

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



文章来源: How to find the default dateformat of a Culture