Переформатируйте дату и время до 7 ноября 2014 г.

1

У меня есть переменная DateTime

7/11/2014 

и я хочу преобразовать эту дату для отображения в качестве

7th November 2014

Какой формат я использую? Я попытался ToLongDateString но он пропускает суффикс даты дня.

  • 0
    stackoverflow.com/questions/2050805/...
  • 0
    stackoverflow.com/questions/20156/...
Показать ещё 4 комментария
Теги:
datetime

1 ответ

6
Лучший ответ

Я не верю в прямую поддержку ординалов ("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, которая теоретически должна обрабатывать ее для всех локалей. Посмотрим...

  • 0
    Удивительно, я посмотрю, ура Джон
  • 1
    Также рассмотрите возможность сделать этот формат методом расширения DateTime и вставьте его в свою личную стандартную библиотеку.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню