¿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.

Respuestas:



20

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


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

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

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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.