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.