C# 特定于区域性的日期元素顺序

C# 特定于区域性的日期元素顺序,c#,.net,C#,.net,我想用字母和日期为用户显示月份。我可以使用DateTime.ToString(“mmmmd”)但在某些国家/地区,正确的格式应为d MMMMM 是否有办法确保顺序始终正确?您可以使用ToString()重载,该重载接受CultureInfo并使用适当的区域性 例如: var american = new CultureInfo("en-us"); var dateString = new DateTime(2000,1,1).ToString("MMMM d", american); 收益率为

我想用字母和日期为用户显示月份。我可以使用
DateTime.ToString(“mmmmd”)
但在某些国家/地区,正确的格式应为
d MMMMM


是否有办法确保顺序始终正确?

您可以使用
ToString()
重载,该重载接受
CultureInfo
并使用适当的区域性

例如:

var american = new CultureInfo("en-us");
var dateString = new DateTime(2000,1,1).ToString("MMMM d", american);
收益率为“1月1日”


更多信息请访问。

不,没有办法。只是快速浏览一下

[Globalization.CultureInfo]::GetCultures([Globalization.CultureTypes]::AllCultures) | 
    select @{l='Culture';e={$_.Name}},@{l='Pattern';e={$_.DateTimeFormat.LongDatePattern}}
揭示了许多文化,其中有一些关于月份和日期的事情需要包含在某些文化中,而另一些文化则需要排除

是否有办法确保订单始终正确

好的,我能想到的最接近的方法是获得正确的“长日期格式”(例如
CultureInfo.currentcurity.DateTimeFormat.LongDatePattern
,然后删除任何不需要的元素

然而,这将是一个相当脆弱的方法,我建议您使用所有您特别关心的文化进行彻底的测试。例如,您需要考虑任何长日期模式不包含“MMMM”的文化…或者以
en-US
为例,其中长日期模式使用
dd
而不是
d
。在这些情况下,您想做什么


然后是整个属格形式和非属格形式——我怀疑对于任何重要的文化来说,无论是长日期格式还是“月日”您所追求的格式将使用相同的格式…但老实说,这一切都变得非常混乱。

不变的区域性从来都不是向用户显示的正确内容。没错,但我不知道在此上下文中什么区域性才是正确的区域性。出于他的目的,应该将不变的区域性替换为正确的区域性。@neontapir:此时您还没有回答了所有问题-请重新阅读。我不同意。如果他想以某种格式一致地显示日期,他可以使用使用该格式的特定区域性。我已经修改了我的示例。这不是使用单一的一致格式。而是使用与用户使用的区域性一致的格式,无论使用哪种格式就是这样。这就是为什么我开始研究每个
LongDatePattern
;-)。我想不出任何可靠的转换:)