¿La mejor manera de convertir un número entero en un nombre de mes en C #?

123

¿Hay una mejor manera de convertir un número entero en su nombre de mes en .net?

Obviamente, puedo girar una fecha y hora para encadenarla y analizar el nombre del mes. Eso solo parece una gigantesca pérdida de tiempo.

En desarrolloChris
fuente

Respuestas:

20

¿Por qué no solo usar somedatetime.ToString("MMMM")?

leppie
fuente
1
Entonces, cada vez que necesito convertir 1 en enero, ¿necesito actualizar una fecha con un año y un día arbitrarios para obtener enero?
DevelopingChris
1
Eso es correcto, como beneficio adicional, puede tenerlo en cualquier idioma localizable que desee :)
leppie
20

Actualizado con el espacio de nombres y el objeto correctos:

//This was wrong
//CultureInfo.DateTimeFormat.MonthNames[index];

//Correct but keep in mind CurrentInfo could be null
DateTimeFormatInfo.CurrentInfo.MonthNames[index];
Ovidiu Pacurar
fuente
1
Esto no funciona Nick Berardi dio la respuesta correcta.
Cuervo
1
a partir de ahora intentaré compilar mis respuestas primero
Ovidiu Pacurar
Al darme cuenta de que esta es una vieja pregunta, todavía quiero señalar que la respuesta aceptada proporcionada por Nick Berandi es más correcta (al menos para la implementación de Microsoft, no estoy seguro acerca de Mono), porque la propiedad MonthNames siempre clona la matriz de nombres de meses, haciendo todo un poco menos eficiente.
AASoft
7

Puede usar un método estático desde el Microsoft.VisualBasicespacio de nombres:

string monthName = Microsoft.VisualBasic.DateAndTime.MonthName(monthInt, false);
Tokabi
fuente
6
DateTime dt = new DateTime(year, month, day);
Response.Write(day + "-" + dt.ToString("MMMM") + "-" + year);

De esta manera, su mes se mostrará por su nombre, no por entero.

usuario1534576
fuente
2

Para obtener el valor abreviado del mes, puede usar Enum.Parse();

Enum.Parse(typeof(Month), "0");

Esto producirá "Jan" como resultado.

Recuerde que este es un índice basado en cero.

algo
fuente