У меня есть переменная DateTime
7/11/2014
и я хочу преобразовать эту дату для отображения в качестве
7th November 2014
Какой формат я использую? Я попытался ToLongDateString
но он пропускает суффикс даты дня.
Я не верю в прямую поддержку ординалов ("st", "nd", "th") в.NET. Если вам нужна только поддержка английского языка, я предлагаю вам выполнить жесткий код самостоятельно. Например:
string text = string.Format("{0}{1} {2} {3}", dt.Day, GetOrdinal(dt.Day),
dt.ToString("MMMM"), dt.Year);
(Где вы сами пишете GetOrdinal
.) Обратите внимание, что это предполагает, что вы хотите именно этот формат - например, разные культуры (даже на английском языке) могут предпочесть November 7th 2014
.
Если вам нужно поддерживать все виды языков, это становится очень сложным - разные языки имеют очень разные подходы к ординалам.
Side-note: Даже Noda Time не справляется с этим. Надеюсь, что в конечном итоге будет реализована поддержка CLDR, которая теоретически должна обрабатывать ее для всех локалей. Посмотрим...