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?

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


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


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

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

¡¿De dónde eviene ?!
— Stuart.Sklinar
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.