4

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

有没有办法确保订单始终正确?

4

3 回答 3

3

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

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

揭示了许多文化,其中围绕月份名称和日期的内容需要包含在某些内容中,而排除在其他内容中。

于 2012-10-15T20:54:15.033 回答
2

有没有办法确保订单始终正确?

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

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

然后是整个属格与非属格形式 - 我怀疑对于任何重要的文化,长日期格式和您所追求的“月日”格式都会使用相同的形式......但这一切都变得很漂亮老实说,乱七八糟。

于 2012-10-15T20:55:07.810 回答
-1

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

例如:

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

产生“1 月 1 日”。

这个问题的更多信息。

于 2012-10-15T20:49:11.973 回答