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


193

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

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

DateTime.Now.ToString("MMMMMMMMMMMMM");

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

Ответы:


285

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

DateTime.Now.ToString("MMMM");

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

6
Удивительно, но я получаю тот самый текст «MMMM»
Chagbert 05

90

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

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

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


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"))
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.