Como obter o nome completo do mês em DateTime

183

Qual é a maneira correta de obter o nome completo do mês de um DateTimeobjeto?
por exemplo January,December .

Atualmente, estou usando:

DateTime.Now.ToString("MMMMMMMMMMMMM");

Eu sei que não é a maneira correta de fazer isso.

shA.t
fonte

Respostas:

272

Use o especificador de formato personalizado "MMMM" :

DateTime.Now.ToString("MMMM");
mservidio
fonte
3
Se for apenas o mês em que você está interessado, então DateTime.Today em vez de DateTime.Now é mais uma simplificação. Nenhuma porção de tempo inútil e um pouco mais rápida.
OrizG
5
Surpreendentemente eu estou recebendo o texto "MMMM"
Chagbert
88

Você pode fazer o que o mservidio sugeriu , ou melhor ainda, acompanhar sua cultura usando essa sobrecarga:

DateTime.Now.ToString("MMMM", CultureInfo.InvariantCulture);
emp
fonte
3
Isso é legal, eu preciso olhar para esse material cultural.
Alex Turpin
2
Se for apenas o mês em que você está interessado, então DateTime.Today em vez de DateTime.Now é mais uma simplificação. Nenhuma porção de tempo inútil e um pouco mais rápida.
OrizG
39

Se você deseja o mês atual, pode usar DateTime.Now.ToString("MMMM")o mês inteiro ou DateTime.Now.ToString("MMM")um mês abreviado.

Se você tiver outra data para a qual deseja obter a sequência do mês, depois de carregada em um objeto DateTime, poderá usar as mesmas funções desse objeto:
dt.ToString("MMMM")para obter o mês inteiro oudt.ToString("MMM") um mês abreviado.

Referência: seqüências de caracteres de formato de data e hora personalizadas

Como alternativa, se você precisar de nomes de meses específicos da cultura, tente: DateTimeFormatInfo.GetAbbreviatedMonthName Método
DateTimeFormatInfo.GetMonthName Método

Jeffrey Blake
fonte
1
+1 por mencionar como fazê-lo de um DateTimeque NÃO é DateTime.Now. Eu pensei que era string mon = myDate.Month.ToString("MMM")quando, infelizmente, fiquei decepcionado ao cuspir "MMM" na minha variável de string. Que bom que você se esforçou para mostrar como usar .ToString("MMM")a data em si para obter o mês, quando não é DateTime.Now. E como você explicou a diferença entre MMMe MMMM. Melhor resposta nesta página. Parabéns.
vapcguy
1
Se for apenas o mês em que você está interessado, então DateTime.Today em vez de DateTime.Now é mais uma simplificação. Nenhuma porção de tempo inútil e um pouco mais rápida.
OrizG
21

Se você receber "MMMM" como resposta, provavelmente está recebendo o mês e depois o convertendo em uma sequência de formato definido.

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

irá produzir "MMMM"

DateTime.Now.ToString("MMMM") 

produzirá o nome do mês

Sabarish Ramachandran
fonte
16

Você pode usar o Culture para obter o nome do mês para o seu país, como:

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

Está

DateTime.Now.ToString("MMMM");

Com 4 Ms.

Alex Turpin
fonte
1
Se for apenas o mês em que você está interessado, então DateTime.Today em vez de DateTime.Now é mais uma simplificação. Nenhuma porção de tempo inútil e um pouco mais rápida.
OrizG
11

Deveria ser apenas DateTime.ToString( "MMMM" )

Você não precisa de todos os extras M.

Stefan H
fonte
9
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.
*/
Madolite
fonte