如何找到文化的默认日期格式
Posted
技术标签:
【中文标题】如何找到文化的默认日期格式【英文标题】:How to find the default dateformat of a Culture 【发布时间】:2012-12-13 02:10:50 【问题描述】:嗯, 我正在尝试获取文化的默认日期格式。
例如 en-us 有 "m/dd/yyyy" , en-uk 'd/mm/yyyy'。文化可以是客户端机器上的任何东西。和 Dateformat 也可以是任何东西。喜欢文化是 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;
但它总是返回dd-MMM-yyyy
。我需要默认的,而不是机器上的设置。
【问题讨论】:
【参考方案1】:我认为问题在于您检索所需文化的方式。
这应该给你默认的文化设置:
var cultureLanguageTag = CultureInfo.CurrentCulture.IetfLanguageTag;
var defaultCulture = CultureInfo.GetCultureInfoByIetfLanguageTag( cultureLanguageTag );
用字符串构造一个应该与文化名称一起使用,我不知道它是否应该与 IETF 标签一起使用,在这种情况下它可能只是返回当前文化。
【讨论】:
这可以工作并提供正确的输出。默认日期格式。【参考方案2】:根据MSDN,CurrentCulture
将通过以下方式之一返回文化:
-
如果不为空,则返回
CultureInfo.DefaultThreadCurrentCulture
。 (请注意,除非您专门设置文化,否则这将始终为空。)
返回调用Windows的GetUserDefaultLocaleName
函数的结果。这将返回您在控制面板中设置的任何文化。
如果您在控制面板中更改区域性,可能会在重新启动计算机之前看不到更改。
要测试文化是否显示正确的日期,您可以使用CultureInfo.CreateSpecificCulture("en-US");
(将“en-US”替换为其他国家/地区的文化代码)手动选择文化而不是使用系统文化。
【讨论】:
CreateSpecificCulture 也只给出当前设置。感谢您的回答。【参考方案3】:以下似乎对我有用。
Console.WriteLine(CultureInfo.GetCultureInfo("en-us").DateTimeFormat.ShortDatePattern);
Console.WriteLine(CultureInfo.GetCultureInfo("en-gb").DateTimeFormat.ShortDatePattern);
输出: 月/日/年 dd/MM/yyyy
【讨论】:
如果当前文化相同且 Shortdate 格式不同。输出会有所不同。以上是关于如何找到文化的默认日期格式的主要内容,如果未能解决你的问题,请参考以下文章