在C#中将整数转换为月份名称的最佳方法?


123

是否有最佳方法将整数转换为.net中的月份名称?

显然,我可以增加日期时间以将其字符串化并从中解析月份名称。这似乎是对时间的巨大浪费。

Answers:



20

为什么不只是使用somedatetime.ToString("MMMM")


1
因此,无论何时我需要将1变成1月,我都需要用任意的年份和日期来更新日期时间,以便只获得1月?
DevelopingChris

1
没错,作为奖励,您可以用任何您想要的本地化语言来提供它:)
leppie

20

更新了正确的名称空间和对象:

//This was wrong
//CultureInfo.DateTimeFormat.MonthNames[index];

//Correct but keep in mind CurrentInfo could be null
DateTimeFormatInfo.CurrentInfo.MonthNames[index];

1
这行不通。尼克·贝拉迪(Nick Berardi)提供了正确的答案。
乌鸦

1
从现在开始,我将尝试首先汇编我的答案
Ovidiu Pacurar,

意识到这是一个古老的问题,我仍然要指出,尼克·贝兰迪(Nick Berandi)提供的可接受的答案更正确(至少对于Microsoft的实现-不确定Mono),因为MonthNames属性始终会克隆月份名称数组,从而整个过程有点效率低下。
AASoft 2013年

7

您可以从Microsoft.VisualBasic名称空间使用静态方法:

string monthName = Microsoft.VisualBasic.DateAndTime.MonthName(monthInt, false);

6
DateTime dt = new DateTime(year, month, day);
Response.Write(day + "-" + dt.ToString("MMMM") + "-" + year);

这样,您的月份将按其名称显示,而不是整数。


2

要获取缩写的月份值,可以使用 Enum.Parse();

Enum.Parse(typeof(Month), "0");

结果将产生“ Jan”。

请记住,这是从零开始的索引。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.