c # Первый месяц в верхнем регистре - PullRequest
7 голосов
/ 29 марта 2011

Я отображаю название месяца следующим образом:

String.Format("{0:MMMM}", DateTime.Now) 

Однако при использовании шведского все названия месяцев пишутся строчными буквами.

Есть ли какая-нибудь хитрая уловка, чтобы сделать первые буквы заглавными при форматировании дат?Или я должен написать для него функцию?

Ответы [ 3 ]

12 голосов
/ 29 марта 2011

Я бы предложил клонировать культуру и заново определить в ней названия нового месяца:

var swedish = CultureInfo.GetCultureInfo("sv-SE");
swedish = (CultureInfo)swedish.Clone();
swedish.DateTimeFormat.MonthNames =
    swedish.DateTimeFormat.MonthNames
        .Select(m => swedish.TextInfo.ToTitleCase(m))
        .ToArray();

swedish.DateTimeFormat.MonthGenitiveNames =
    swedish.DateTimeFormat.MonthGenitiveNames
        .Select(m => swedish.TextInfo.ToTitleCase(m))
        .ToArray();

и затем используйте его в string.Format методе:

// date holds "Mars"
var date = String.Format(swedish, "{0:MMMM}", DateTime.Now);

Чтобы сделать месяцы прописными, я использую метод TextInfo.ToTitleCase.

7 голосов
/ 29 марта 2011

Здесь уже есть несколько хороших ответов. Если вам нужна функция, вы можете написать:

char.ToUpper(s[0]) + s.Substring(1);
0 голосов
/ 29 марта 2011

Существуют различные решения;у ответов на этот вопрос есть несколько хороших.

как в верхнем регистре дата и месяц первая буква ToLongDateString () приведет к es-mx Culture?

...