2011-03-29 57 views
7

我顯示月份名稱如下:C#首先monthletter在大寫

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

然而,在使用瑞典當所有月份名稱是小寫。

格式化日期時,是否有一些簡潔的把第一個字母大寫的技巧?或者我必須爲它編寫一個函數?

+0

瑞典月份名稱中的ToUpper()....... – kenny 2011-03-29 12:00:40

+8

是全部小寫的。爲什麼你不想使用不同的格式?它是否是句子中的第一個單詞?在這種情況下,它不再是日期格式... – vidstige 2011-03-29 12:02:04

+0

「如果日期出現在句子的開頭,它不是日期格式。」你如何解決這個問題? – Stewart 2015-03-25 18:11:01

回答

7

這裏有已經有一些很好的答案。如果你想有一個功能,你可以寫:

char.ToUpper(s[0]) + s.Substring(1); 
+5

改爲使用TextInfo.ToTitleCase()。 – 2011-03-29 12:26:00

11

我建議克隆文化,它重新定義了新的月份名稱:

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方法。

+0

不錯!這對我來說非常有用,因爲我需要在代碼中多次使用幾個月,所以使用Substring會非常煩人。 – 2013-09-09 14:35:08