2010-07-06 24 views
184

Duplicar posible:
How to get the MonthName in c#?Obtener el nombre Mes del número del mes

que utilizó la siguiente # sintaxis de C para obtener el nombre del mes de mes no, pero me sale August quiero solamente Aug ..

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

Cualquier sugerencia ...

+2

Aparte de .GetMonthName (int) no devuelve la cadena que está buscando, * * devuelve una cadena, por lo que el .ToString() es innecesario – DaveD

+1

No sería más fácil simplemente agregar un .Substring (0 , 3)? –

Respuesta

261

Para nombres de los meses corto Se utiliza:

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

Para nombres de los meses largos/full para español ("ES ") cultura

string fullMonthName = new DateTime(2015, i, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("es")); 
+0

¿cómo usaría el código anterior si quiero "agosto"? nombre completo del mes? – user2705620

+21

@ User6675636b20796f7521 'string monthName = new DateTime (2010, 8, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture);' –

+0

Esto: "string s = new DateTime (1958, month, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture());" me da, "miembro no invocable 'System.Globalization.CultureInfo.InvariantCulture' no se puede utilizar como un método". –

11

¿Quieres GetAbbreviatedMonthName

81

Reemplazar GetMonthName con GetAbbreviatedMonthName para que se lea:

string strMonthName = mfi.GetAbbreviatedMonthName(8); 
212

Para abreviado del mes Nombres: "agosto"

DateTimeFormatInfo.GetAbbreviatedMonthName Method (Int32)

Devuelve el nombre abreviado específico de la cultura del mes especificado basado en la cultura asociada con la corriente DateTimeFormatInfo objeto.

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

Por mes completo nombres: "Agosto"

DateTimeFormatInfo.GetMonthName Method (Int32)

Devuelve el nombre completo específico de la cultura del mes especificado basado en la cultura asociada con la corriente Objeto DateTimeFormatInfo.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8); 
+2

GetMonthName devuelve el nombre completo del mes. Si lo necesita como JAN, FEB, etc., puede usar var month = 10; cadena monthName = new DateTime (2014, mes, 1) .ToString ("MMM", CultureInfo.InvariantCulture) .ToUpper(); –

+3

@DmitryPavlov 'GetAbbreviatedMonthName()' es una mejor manera de hacerlo. – NickG

+2

DateTimeFormatInfo debe ser DateTimeFormat (al menos en .net 4.6) – TravisWhidden

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

Este método de retorno April

Si necesita algo de lenguaje especial, se puede añadir:

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

O su idioma preferido.

Por ejemplo, con es-ES cultura:

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

Devuelve: Abril

Devuelve: Abril (en español, ya que, hemos configurado el culture as es-ES en nuestro fichero webconfig, de lo contrario, obtendrá April)

Eso debería funcionar.

1

Usted puede conseguir esto en modo siguiente,

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

Ahora, obtener tres primeros caracteres

string shortMonthName = strMonthName.Substring(0, 3); //Aug 

, gracias.

Cuestiones relacionadas