我想用字母和日期显示用户的月份。我可以使用DateTime.ToString("MMMM d");
,但在某些国家/地区,格式正确为d MMMMM
。
有没有办法确保订单永远正确?
答案 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中的更多信息。