El nombre del mes como una cadena

Estoy tratando de devolver el nombre del mes como una cadena, por ejemplo, “mayo”, “septiembre”, “noviembre”.

Lo intenté:

int month = c.get(Calendar.MONTH); 

Sin embargo, esto devuelve enteros (5, 9, 11, respectivamente). ¿Cómo puedo obtener el nombre del mes?

Use getDisplayName .

Para las API anteriores use String.format(Locale.US,"%tB",c);

Utilizar esta :

 Calendar cal=Calendar.getInstance(); SimpleDateFormat month_date = new SimpleDateFormat("MMMM"); String month_name = month_date.format(cal.getTime()); 

El nombre del mes contendrá el nombre del mes completo, si desea el nombre del mes corto, use este

  SimpleDateFormat month_date = new SimpleDateFormat("MMM"); String month_name = month_date.format(cal.getTime()); 

Para obtener el mes en la variable de cadena use el siguiente código

Por ejemplo, el mes de septiembre:

M -> 9

MM -> 09

MMM -> Sep

MMMM -> septiembre

 String monthname=(String)android.text.format.DateFormat.format("MMMM", new Date()) 

“MMMM” definitivamente NO es la solución correcta (funciona accidentalmente para algunos idiomas, como el inglés), usa el patrón “LLLL” con SimpleDateFormat

El soporte para ‘L’ como extensión compatible con ICU para nombres de mes independientes se agregó a la plataforma Android en junio de 2010 .

Incluso si en inglés no hay diferencia entre la encoding por ‘MMMM’ y ‘LLLL’, también deberías pensar en otros idiomas.

Por ejemplo, esto es lo que obtienes si utilizas Calendar.getDisplayName o el patrón “MMMM” para enero con la Locale Rusia:

января (que es correcto para una cadena de fecha completa: ” 10 января, 2014 “)

pero en el caso de un nombre de mes independiente, usted esperaría:

январь

La solución correcta es:

  SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() ); dateFormat.format( date ); 

Si le interesa saber de dónde provienen todas las traducciones, aquí está la referencia a las traducciones del calendario gregoriano (otros calendarios vinculados en la parte superior de la página).

Tan simple como esto

 mCalendar = Calendar.getInstance(); String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault()); 

Guardo esta respuesta que es útil para otros casos, pero la respuesta de @trutheality parece ser la más simple y directa.

Puedes usar DateFormatSymbols

 DateFormatSymbols(Locale.FRENCH).getMonths()[month]; // FRENCH as an example