Cómo obtener el nombre completo del mes de DateTime

184

¿Cuál es la forma correcta de obtener el nombre completo del mes de un DateTimeobjeto?
por ejemplo January, December.

Actualmente estoy usando:

DateTime.Now.ToString("MMMMMMMMMMMMM");

Sé que no es la forma correcta de hacerlo.

shA.t
fuente

Respuestas:

273

Utilice el especificador de formato personalizado "MMMM" :

DateTime.Now.ToString("MMMM");
mservidio
fuente
3
Si solo le interesa el mes, DateTime.Today en lugar de DateTime.Now es una simplificación adicional. Sin porción de tiempo inútil y un poco más rápido.
OrizG
55
Sorprendentemente, recibo el mismo texto "MMMM"
Chagbert
88

Puede hacer lo que sugirió mservidio , o incluso mejor, realizar un seguimiento de su cultura utilizando esta sobrecarga:

DateTime.Now.ToString("MMMM", CultureInfo.InvariantCulture);
emp
fuente
3
Eso está bien, necesito investigar esta cultura.
Alex Turpin
2
Si solo le interesa el mes, DateTime.Today en lugar de DateTime.Now es una simplificación adicional. Sin porción de tiempo inútil y un poco más rápido.
OrizG
39

Si desea el mes actual, puede usarlo DateTime.Now.ToString("MMMM")para obtener el mes completo o DateTime.Now.ToString("MMM")un mes abreviado.

Si tiene otra fecha para la que desea obtener la cadena de mes, después de cargarla en un objeto DateTime, puede usar las mismas funciones fuera de ese objeto:
dt.ToString("MMMM")para obtener el mes completo o dt.ToString("MMM")un mes abreviado.

Referencia: cadenas de formato de fecha y hora personalizadas

Alternativamente, si necesita nombres de mes específicos de la cultura, puede probar estos: Método
DateTimeFormatInfo.GetAbbreviatedMonthName DateTimeFormatInfo.GetMonthName Method

Jeffrey Blake
fuente
1
+1 por mencionar cómo hacerlo desde un DateTimeNO DateTime.Now. Pensé que era string mon = myDate.Month.ToString("MMM")cuando me decepcionaba escupir "MMM" en mi variable de cadena. Me alegro de que te hayas esforzado por mostrar cómo usar .ToString("MMM")la fecha, para obtener el mes, cuando no es así DateTime.Now. Y cómo explicaste la diferencia entre MMMy MMMM. La mejor respuesta en esta página. Prestigio.
vapcguy
1
Si solo le interesa el mes, DateTime.Today en lugar de DateTime.Now es una simplificación adicional. Sin porción de tiempo inútil y un poco más rápido.
OrizG
21

Si recibe "MMMM" como respuesta, probablemente obtenga el mes y luego lo convierta a una cadena de formato definido.

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

generará "MMMM"

DateTime.Now.ToString("MMMM") 

mostrará el nombre del mes

Sabarish Ramachandran
fuente
16

Puede usar Culture para obtener el nombre del mes para su 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
fuente
14

Sus

DateTime.Now.ToString("MMMM");

Con 4 Ms.

Alex Turpin
fuente
1
Si solo le interesa el mes, DateTime.Today en lugar de DateTime.Now es una simplificación adicional. Sin porción de tiempo inútil y un poco más rápido.
OrizG
11

Debería ser solo DateTime.ToString( "MMMM" )

No necesitas todos los Ms extra .

Stefan H
fuente
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.
*/
Madolita
fuente