Как получить полное название месяца из DateTime

193

Как правильно получить полное название месяца DateTimeобъекта?
например January, December.

В настоящее время я использую:

DateTime.Now.ToString("MMMMMMMMMMMMM");

Я знаю, что это неправильный способ.

shA.t
источник

Ответы:

285

Используйте описатель настраиваемого формата "MMMM" :

DateTime.Now.ToString("MMMM");
Mservidio
источник
3
Если вас интересует только месяц, то DateTime.Today вместо DateTime.Now является еще одним упрощением. Без бесполезной порции времени и немного быстрее.
OrizG
6
Удивительно, но я получаю тот самый текст «MMMM»
Chagbert 05
90

Вы можете делать то, что предлагает mservidio , или, что еще лучше, отслеживать свою культуру, используя эту перегрузку:

DateTime.Now.ToString("MMMM", CultureInfo.InvariantCulture);
emp
источник
3
Это здорово, мне нужно разобраться в этой культуре.
Alex Turpin
2
Если вас интересует только месяц, то DateTime.Today вместо DateTime.Now является еще одним упрощением. Без бесполезной порции времени и немного быстрее.
OrizG
40

Если вам нужен текущий месяц, вы можете использовать его DateTime.Now.ToString("MMMM")для получения полного месяца или DateTime.Now.ToString("MMM")для получения сокращенного месяца.

Если у вас есть другая дата, для которой вы хотите получить строку месяца после ее загрузки в объект DateTime, вы можете использовать те же функции вне этого объекта:
dt.ToString("MMMM")для получения полного месяца или dt.ToString("MMM")для получения сокращенного месяца.

Ссылка: строки настраиваемого формата даты и времени

В качестве альтернативы, если вам нужны названия месяцев для конкретных культур, вы можете попробовать следующее: Метод
DateTimeFormatInfo.GetAbbreviatedMonthName Метод DateTimeFormatInfo.GetMonthName

Джеффри Блейк
источник
1
+1 за упоминание, как это сделать из DateTimeНЕТ DateTime.Now. Я думал, что это случилось, string mon = myDate.Month.ToString("MMM")когда меня разочаровало то, что он выплюнул "MMM" в мою строковую переменную. Рад, что вы приложили усилия, чтобы показать, как использовать .ToString("MMM")дату как таковую, чтобы получить месяц, когда это не так DateTime.Now. И как вы объяснили разницу между MMMи MMMM. Лучший ответ на этой странице. Престижность.
vapcguy 07
1
Если вас интересует только месяц, то DateTime.Today вместо DateTime.Now является еще одним упрощением. Без бесполезной порции времени и немного быстрее.
OrizG
27

Если вы получили в ответ «MMMM», вероятно, вы получаете месяц, а затем конвертируете его в строку определенного формата.

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

выведет "MMMM"

DateTime.Now.ToString("MMMM") 

выведет название месяца

Сабариш Рамачандран
источник
16

Вы можете использовать Культуру, чтобы получить название месяца для вашей страны, например:

System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ar-EG");
string FormatDate = DateTime.Now.ToString("dddd., MMM dd yyyy, hh:MM tt", culture);
Йехия Эльхавари
источник
14

Это

DateTime.Now.ToString("MMMM");

С 4 Mс.

Алекс Терпин
источник
1
Если вас интересует только месяц, то DateTime.Today вместо DateTime.Now является еще одним упрощением. Без бесполезной порции времени и немного быстрее.
OrizG
11

Это должно быть просто DateTime.ToString( "MMMM" )

Вам не нужны все лишние M.

Стефан Х
источник
10
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.
*/
Мадолит
источник
2

Обмен наукой прекрасен и в удовольствие бога

Debug.writeline(Format(Now, "dd MMMM yyyy"))
Fajarsoft
источник