How to get complete month name from DateTime

C#DatetimeCalendar

C# Problem Overview


What is the proper way to get the complete name of month of a DateTime object?
e.g. January, December.

I am currently using:

DateTime.Now.ToString("MMMMMMMMMMMMM");

I know it's not the correct way to do it.

C# Solutions


Solution 1 - C#

Use the "MMMM" custom format specifier:

DateTime.Now.ToString("MMMM");

Solution 2 - C#

You can do as mservidio suggested, or even better, keep track of your culture using this overload:

DateTime.Now.ToString("MMMM", CultureInfo.InvariantCulture);

Solution 3 - C#

If you want the current month you can use DateTime.Now.ToString("MMMM") to get the full month or DateTime.Now.ToString("MMM") to get an abbreviated month.

If you have some other date that you want to get the month string for, after it is loaded into a DateTime object, you can use the same functions off of that object:
dt.ToString("MMMM") to get the full month or dt.ToString("MMM") to get an abbreviated month.

Reference: Custom Date and Time Format Strings

Alternatively, if you need culture specific month names, then you could try these: DateTimeFormatInfo.GetAbbreviatedMonthName Method
DateTimeFormatInfo.GetMonthName Method

Solution 4 - C#

If you receive "MMMM" as a response, probably you are getting the month and then converting it to a string of defined format.

DateTime.Now.Month.ToString("MMMM") 

will output "MMMM"

DateTime.Now.ToString("MMMM") 

will output the month name

Solution 5 - C#

You can use Culture to get month name for your country like:

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ar-EG");
string FormatDate = DateTime.Now.ToString("dddd., MMM dd yyyy, hh:MM tt", culture);

Solution 6 - C#

It's

DateTime.Now.ToString("MMMM");

With 4 Ms.

Solution 7 - C#

It should be just DateTime.ToString( "MMMM" )

You don't need all the extra Ms.

Solution 8 - C#

DateTime birthDate = new DateTime(1981, 8, 9);
Console.WriteLine ("I was born on the {0}. of {1}, {2}.", birthDate.Day, birthDate.ToString("MMMM"), birthDate.Year);

/* The above code will say:
"I was born on the 9. of august, 1981."

"dd" converts to the day (01 thru 31).
"ddd" converts to 3-letter name of day (e.g. mon).
"dddd" converts to full name of day (e.g. monday).
"MMM" converts to 3-letter name of month (e.g. aug).
"MMMM" converts to full name of month (e.g. august).
"yyyy" converts to year.
*/

Solution 9 - C#

Debug.writeline(Format(Now, "dd MMMM yyyy"))

Solution 10 - C#

You can use the CultureInfo from System.Globalization to get that data, based on the current culture that is being used.

_ = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(DateTime.Now.Month)

Or, use InvariantCulture to also get the English name.

_ = CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(DateTime.Now.Month);

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser728885View Question on Stackoverflow
Solution 1 - C#mservidioView Answer on Stackoverflow
Solution 2 - C#empView Answer on Stackoverflow
Solution 3 - C#Jeffrey BlakeView Answer on Stackoverflow
Solution 4 - C#Sabarish RamachandranView Answer on Stackoverflow
Solution 5 - C#Yehia ElhawaryView Answer on Stackoverflow
Solution 6 - C#Alex TurpinView Answer on Stackoverflow
Solution 7 - C#Stefan HView Answer on Stackoverflow
Solution 8 - C#MadoliteView Answer on Stackoverflow
Solution 9 - C#FajarsoftView Answer on Stackoverflow
Solution 10 - C#DebView Answer on Stackoverflow