Best way to turn an integer into a month name in c#?
.NetParsingDate.Net Problem Overview
Is there a best way to turn an integer into its month name in .net?
Obviously I can spin up a datetime to string it and parse the month name out of there. That just seems like a gigantic waste of time.
.Net Solutions
Solution 1 - .Net
Try GetMonthName from DateTimeFormatInfo
http://msdn.microsoft.com/en-us/library/system.globalization.datetimeformatinfo.getmonthname.aspx
You can do it by:
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(1);
Solution 2 - .Net
Why not just use somedatetime.ToString("MMMM")
?
Solution 3 - .Net
Updated with the correct namespace and object:
//This was wrong
//CultureInfo.DateTimeFormat.MonthNames[index];
//Correct but keep in mind CurrentInfo could be null
DateTimeFormatInfo.CurrentInfo.MonthNames[index];
Solution 4 - .Net
You can use a static method from the Microsoft.VisualBasic
namespace:
string monthName = Microsoft.VisualBasic.DateAndTime.MonthName(monthInt, false);
Solution 5 - .Net
DateTime dt = new DateTime(year, month, day);
Response.Write(day + "-" + dt.ToString("MMMM") + "-" + year);
In this way, your month will be displayed by their name, not by integer.
Solution 6 - .Net
To get abbreviated month value, you can use Enum.Parse();
Enum.Parse(typeof(Month), "0");
This will produce "Jan" as result.
Remember this is zero-based index.