将日期时间重新格式化为2014年11月7日

Can*_*vas 1 c# asp.net datetime

我有自己的DateTime变量

7/11/2014 
Run Code Online (Sandbox Code Playgroud)

我想将该日期转换为显示为

7th November 2014
Run Code Online (Sandbox Code Playgroud)

我使用什么格式?我试过了,ToLongDateString但它错过了日期的后缀.

Jon*_*eet 6

我不相信.NET中的序数("st","nd","th")有任何直接支持.如果你只需要支持英语,我建议你自己硬编码.例如:

string text = string.Format("{0}{1} {2} {3}", dt.Day, GetOrdinal(dt.Day),
                            dt.ToString("MMMM"), dt.Year);
Run Code Online (Sandbox Code Playgroud)

(如果你会写GetOrdinal自己.)注意,这里假设你想正是这种格式-不同的文化(甚至在英语),可能更喜欢November 7th 2014的例子.

如果你需要支持各种语言,就变得非常困难-不同的语言有一些非常不同的方法序.

旁注:即使Noda Time也没有处理这个问题.我希望最终实现一些CLDR支持,理论上它应该适用于所有语言环境.走着瞧...