文化特定的日期元素顺序

时间:2012-10-15 20:44:08

标签: c# .net

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

有没有办法确保订单永远正确?

3 个答案:

答案 0 :(得分:3)

不,没有办法。只需快速浏览

即可
[Globalization.CultureInfo]::GetCultures([Globalization.CultureTypes]::AllCultures) | 
    select @{l='Culture';e={$_.Name}},@{l='Pattern';e={$_.DateTimeFormat.LongDatePattern}}

揭示了许多文化,其中有月份名称和日期需要包含在某些内容中,而在某些文章中被排除在外。

答案 1 :(得分:2)

  

有没有办法确保订单永远正确?

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

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

然后是整个属性与非属性形式 - 我怀疑对于任何重要的文化,你所使用的长日期格式和“月日”格式都会使用同样的形式......但说实话,这一切都变得非常混乱。

答案 2 :(得分:-1)

您可以使用ToString()重载CultureInfo并使用适当的文化。

例如:

var american = new CultureInfo("en-us");
var dateString = new DateTime(2000,1,1).ToString("MMMM d", american);

收益率“1月1日”。

this question中的更多信息。