Pregunta Cómo obtener el nombre del mes de Calendar


¿Hay un oneliner para saber el nombre del mes cuando sabemos int monthNumber = calendar.get(Calendar.MONTH) ? ¿O cuál es la manera más fácil?


74
2018-02-12 12:04


origen


Respuestas:


Usted obtendrá de esta manera también.

  String getMonthForInt(int num) {
        String month = "wrong";
        DateFormatSymbols dfs = new DateFormatSymbols();
        String[] months = dfs.getMonths();
        if (num >= 0 && num <= 11 ) {
            month = months[num];
        }
        return month;
    }

72
2018-02-12 12:09



puedes lograrlo usando SimpleDateFormat, que está destinado a formatear la fecha y la hora.

Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));

147
2018-02-12 12:05



Tan simple como esto

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

56
2018-04-24 10:42



Esta es la solución que se me ocurrió para un proyecto de clase:

public static String theMonth(int month){
    String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    return monthNames[month];
}

El número que pasa proviene de un Calendar.MONTH llamada.


40
2017-10-31 01:14



si tiene una interfaz en varios idiomas, puede usar getDisplayName para mostrar el nombre del mes con el control de mostrar el idioma.

Aquí hay un ejemplo de mostrar el nombre del mes en inglés, frensh, árabe y árabe en un país específico como "Siria":

    Calendar c = Calendar.getInstance();
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.FRANCE ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar") ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar", "SY") ) );
    System.out.println(c.getTime().toString());

el resultado es:

  January
  janvier
  يناير
  كانون الثاني
  Sat Jan 17 19:31:30 EET 2015

30
2018-01-17 17:40



Joda-Time

¿Qué hay de usar Joda-Time. Es una API de fecha y hora mucho mejor para trabajar (y January significa enero aquí. No es como Calendar, que usa 0-based índice por meses).

Puedes usar AbstractDateTime#toString( pattern ) método para formatear la fecha en el formato especificado:

DateTime date = DateTime.now();
String month = date.toString("MMM");

Mes Nombre de Número

Si desea un nombre de mes para un número de mes en particular, puede hacerlo así:

int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");

Localizar

El enfoque anterior utiliza la configuración regional predeterminada actual de su JVM para el idioma del nombre del mes. Desea especificar un objeto de configuración regional en su lugar.

String month = date.toString( "MMM", Locale.CANADA_FRENCH );

10
2018-02-12 12:10



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

Para algunos idiomas (por ejemplo, ruso), esta es la única forma correcta de obtener los nombres de mes independientes.

Esto es lo que obtienes, si usas getDisplayName desde el Calendar o DateFormatSymbols para enero:

января (que es correcto para una cadena de fecha completa: "10 de enero de 2014")

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

январь


9
2017-08-15 15:42



Desde Java 8:

public static String getMonthStandaloneName(Month month) {
    return month.getDisplayName(TextStyle.FULL_STANDALONE, Locale.getDefault());
}

8
2018-04-17 12:37