C#中是否有内置的月份名称变量

Kol*_*kov 37 .net c# globalization datetime datetime-format

我想知道在.NET中是否有任何内置功能可以用于支持名词变换的语言中的日期缩短,(例如,在俄语中,月份名称是???????,但如果我想说出日期或说某事是由于,我会用这个表格???????).我制作了自己的版本,适用于本案例,但我需要扩展到其他案例和其他语言,这些语言将有自己的日期变量.

此功能是内置的,还是在外部库中可用?感谢您的任何帮助.

如果我的解释不清楚,我已经为俄罗斯的属格案例提供了我的功能.

public static string DeclineMonth(this DateTime time)
{
    var month = time.ToString("MMMM");
    if (month.Last() == '?')
        return month.Replace('?', '?');
    else
        return month + "a";
}       
Run Code Online (Sandbox Code Playgroud)

Dmi*_*nko 56

你可以在两个案例中获得几个月的名字,Nominative:

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

// February: 2 - 1 (array is zero based) - "???????"
Console.Write(info.MonthNames[2 - 1]);
Run Code Online (Sandbox Code Playgroud)

Genitive:

// February: 2 - 1 (array is zero based) - "???????"
Console.Write(info.MonthGenitiveNames[2 - 1]);
Run Code Online (Sandbox Code Playgroud)

其他情况(例如Dative,Accusative)不受支持,我们必须手动实施.

  • @Tim Schmelter:即使是俄罗斯也有'6`*标准*和'5`*过时的案例; 芬兰语使用"15",匈牙利语"21"......"Genetive"至少是典型用途 (9认同)
  • @Dmirtry:我不知道我们在.NET中有这样的东西,不错但它引发了一个问题,为什么他们停止了属性 (4认同)
  • 谢谢,效果很好!作为奖励,将月份作为小写返回(您在代码注释中显示,但我错过了,所以我非常高兴)! (2认同)