Convertir mes int al nombre del mes

81

Simplemente estaba tratando de usar la DateTimeestructura para transformar un número entero entre 1 y 12 en un nombre de mes abreviado.

Esto es lo que probé:

DateTime getMonth = DateTime.ParseExact(Month.ToString(), 
                       "M", CultureInfo.CurrentCulture);
return getMonth.ToString("MMM");

Sin embargo, obtengo un FormatExceptionen la primera línea porque la cadena no es válida DateTime. ¿Puede alguien decirme cómo hacer esto?

Alex Hope O'Connor
fuente

Respuestas:

137
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(1);

Consulte aquí para obtener más detalles.

O

DateTime dt = DateTime.Now;
Console.WriteLine( dt.ToString( "MMMM" ) );

O si desea obtener el nombre abreviado específico de la cultura .

GetAbbreviatedMonthName(1);

Referencia

CharithJ
fuente
8
GetAbbreviatedMonthName()parece apropiado.
Bala R
¿Qué es lo opuesto a esto? ingrese el nombre del mes y recupere el número?
Alok Rajasukumaran
1
int month = DateTime.ParseExact(MonthNameValue, "MMMM", CultureInfo.CurrentCulture ).Month
CharithJ
eso no es int para el nombre del mes, es la fecha y hora para el nombre del mes
sairfan
28
var monthIndex = 1;
return month = DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(monthIndex);

Puedes probar este también

xei2k
fuente
4
Solo para agregar algo a esta buena respuesta, DateTimeFormatInfo está dentro de System.Globalization, luego se necesita para importar este espacio de nombres.
BernieSF
11

En su lugar, puedes hacer algo como esto.

return new DateTime(2010, Month, 1).ToString("MMM");
Bala R
fuente
0
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(
    Convert.ToInt32(e.Row.Cells[7].Text.Substring(3,2))).Substring(0,3) 
    + "-" 
    + Convert.ToDateTime(e.Row.Cells[7].Text).ToString("yyyy");
Samuel A
fuente
¡¿De dónde eviene ?!
Stuart.Sklinar