2017-02-09 25 views
38

我不知道是否有任何內置的.NET功能爲支持名詞變格語言下降日期, (即在俄羅斯月份名稱是февраль,但如果我想說日期或說某件事情到期,我會用表格февраля)。我做了我自己的版本,這個版本適用於這種情況,但是我需要擴展到其他情況以及其他語言,這些語言會有自己的日期變體。是否有內置月份名稱變格在C#

此功能是內置的還是外部庫中可用的?感謝您的任何幫助。

如果我的解釋不清楚,我已經爲俄羅斯所有權案提供了我的功能。

public static string DeclineMonth(this DateTime time) 
{ 
    var month = time.ToString("MMMM"); 
    if (month.Last() == 'ь') 
     return month.Replace('ь', 'я'); 
    else 
     return month + "a"; 
}  

回答

56

可以在箱子獲得幾個月的名字,記名

DateTimeFormatInfo info = CultureInfo.GetCultureInfo("ru-RU").DateTimeFormat; 

// February: 2 - 1 (array is zero based) - "Февраль" 
Console.Write(info.MonthNames[2 - 1]); 

而且所有格

// February: 2 - 1 (array is zero based) - "февраля" 
Console.Write(info.MonthGenitiveNames[2 - 1]); 

其他情況下(如與格指責)不受支持,我們必須手動實施它們。

+4

@Dmirtry:不知道,我們在.NET,漂亮有這樣的事情,但它提出了爲什麼他們與所有格 –

+9

@Tim Schmelter停止這樣的問題:即使俄羅斯有'6' *標準*和'5' *陳舊*案件;芬蘭語使用'15',匈牙利語'21' ...'Genetive'至少在典型使用 –

+2

謝謝,作品很棒!作爲獎勵,將月份以小寫形式返回(您在代碼註釋中顯示的內容,但我錯過了,所以我非常高興)! – Kolichikov