Obtener el nombre del mes del número del mes

254

Posible duplicado:
¿Cómo obtener el MonthName en c #?

Usé la siguiente sintaxis de C # para obtener el nombre del mes del mes no, pero obtengo Augustque solo quiero Aug...

System.Globalization.DateTimeFormatInfo mfi = new 
System.Globalization.DateTimeFormatInfo();
string strMonthName = mfi.GetMonthName(8).ToString();

Cualquier sugerencia...

bala3569
fuente
3
Aparte de que .GetMonthName (int) no devuelve la cadena que está buscando, devuelve una cadena, por lo que .ToString () es innecesario
DaveD
1
¿No sería más fácil agregar una .Substring (0,3)?
Federico Navarrete
Posible duplicado de ¿Cómo obtener el nombre del mes en C #?
Cœur

Respuestas:

349

Para nombres de meses cortos use:

string monthName = new DateTime(2010, 8, 1)
    .ToString("MMM", CultureInfo.InvariantCulture);

Para nombres de meses largos / completos para la cultura española ("es")

string fullMonthName = new DateTime(2015, i, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("es"));
Darin Dimitrov
fuente
¿Cómo usaría el código anterior si quiero "agosto"? nombre completo del mes?
Albert Laure
25
@ Usuario6675636b20796f7521string monthName = new DateTime(2010, 8, 1) .ToString("MMMM", CultureInfo.InvariantCulture);
Robert Fricke
Esto: "string s = new DateTime (1958, month, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture ());" me dice, "El miembro no invocable 'System.Globalization.CultureInfo.InvariantCulture' no se puede usar como un método".
B. Clay Shannon
B. Clay Shannon add () around (nuevo DateTime (1958, mes, 1))
nuclear dulce
2
Esta respuesta no es la mejor en mi humilde opinión para trabajar desde un número de mes en lugar de una fecha y hora como en la pregunta OP. La respuesta de Lasse V. Karlsen es más sencilla para el nombre de un mes corto. Y para obtener el nombre del mes en su cultura local, use CultureInfo.CurrentCulture como en las respuestas de CharithJ.
AFract
290

Para nombres abreviados de mes: "Ago"

Método DateTimeFormatInfo.GetAbbreviatedMonthName (Int32)

Devuelve el nombre abreviado específico de la cultura del mes especificado en función de la cultura asociada con el objeto DateTimeFormatInfo actual.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(8)

Para nombres de mes completo: "agosto"

Método DateTimeFormatInfo.GetMonthName (Int32)

Devuelve el nombre completo específico de la cultura del mes especificado según la cultura asociada con el objeto DateTimeFormatInfo actual.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8);
CharithJ
fuente
2
GetMonthName devuelve el nombre completo del mes. Si lo necesita como JAN, FEB, etc., puede usar var mes = 10; string monthName = new DateTime (2014, month, 1) .ToString ("MMM", CultureInfo.InvariantCulture) .ToUpper ();
Dmitry Pavlov
3
@DmitryPavlov GetAbbreviatedMonthName()es una mejor manera de hacerlo.
NickG
2
DateTimeFormatInfo debe ser DateTimeFormat (al menos en .net 4.6)
TravisWhidden
La segunda opción funcionó para mí, aunque lo usé en GetCultureInfo("en-GB")lugar de CurrentCultureporque quería estar seguro de que mi nombre de mes siempre estará en inglés
Maurice Klimek
Esta debería ser la mejor respuesta. Me salvó el día Gracias.
Mahmoud Eidarous
85

Reemplace GetMonthNamecon GetAbbreviatedMonthNamepara que se lea:

string strMonthName = mfi.GetAbbreviatedMonthName(8);
Lasse V. Karlsen
fuente
12

Usted quiere GetAbbreviatedMonthName

AakashM
fuente
11

Puede obtener esto de la siguiente manera,

DateTimeFormatInfo mfi = new DateTimeFormatInfo();
string strMonthName = mfi.GetMonthName(8).ToString(); //August

Ahora, obtenga los primeros tres personajes

string shortMonthName = strMonthName.Substring(0, 3); //Aug
Thili77
fuente
9
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4)

Este método vuelve April

Si necesita un lenguaje especial, puede agregar:

<system.web>
    <globalization culture="es-ES" uiCulture="es-ES"></globalization>
     <compilation debug="true"
</system.web>

O tu idioma preferido.

Por ejemplo, con es-EScultura:

System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4)

Devoluciones: Abril

Devoluciones: Abril(en español, porque lo configuramos culture as es-ESen nuestro webconfigarchivo, de lo contrario, obtendrá April)

Eso debería funcionar.

MrMins
fuente
5

Esto debería devolver el texto del mes (enero - diciembre) del índice del mes (1-12)

int monthNumber = 1; //1-12  
string monthName = new DateTimeFormatInfo().GetMonthName(monthNumber);
Rishin C
fuente
1
Proporcione alguna información adicional. No solo publique el código
ochs.tobi
1
var month = 5;
var cultureSwe = "sv-SE";
var monthSwe = CultureInfo.CreateSpecificCulture(cultureSwe).DateTimeFormat.GetAbbreviatedMonthName(month);
Console.WriteLine(monthSwe);

var cultureEn = "en-US";
var monthEn = CultureInfo.CreateSpecificCulture(cultureEn).DateTimeFormat.GetAbbreviatedMonthName(month);
Console.WriteLine(monthEn);

Salida

maj
may
Joel Wiklund
fuente