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.

Respostas:



88

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

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

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


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


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);

14

Está

DateTime.Now.ToString("MMMM");

Com 4 Ms.


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.


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.
*/
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.