Есть ли oneliner, чтобы получить название месяца, когда мы знаем int monthNumber = calendar.get(Calendar.MONTH)? Или что является самым простым способом?
Как получить название месяца из Календарь
Ответ 1
Вы также получите этот путь.
  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;
    }
		Ответ 2
вы можете достичь этого, используя SimpleDateFormat, который предназначен для форматирования даты и времени.
Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
		Ответ 3
Проще, чем этот
mCalendar = Calendar.getInstance();    
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
		Ответ 4
Это решение, которое я разработал для проекта класса:
public static String theMonth(int month){
    String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    return monthNames[month];
}
Число, которое вы передаете, происходит от вызова Calendar.MONTH.
Ответ 5
Если у вас многоязычный интерфейс, вы можете использовать getDisplayName для отображения названия месяца с контролем отображения языка.
вот пример отображения имени месяца на английском, французском, арабском и арабском языках в определенной стране, например, "Сирия":
    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());
результат:
  January
  janvier
  يناير
  كانون الثاني
  Sat Jan 17 19:31:30 EET 2015
		Ответ 6
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );
Для некоторых языков (например, русский) это единственный правильный способ получить автономные месячные имена.
Это то, что вы получаете, если вы используете getDisplayName из Calendar или DateFormatSymbols для января:
января (что верно для полной строки даты: " 10 января, 2014" )
но в случае автономного имени месяца вы ожидаете:
январь
Ответ 7
Joda времени
Как насчет использования Joda-Time. Это гораздо лучший API с датой и временем работы (и January означает январь здесь. Это не похоже на Календарь, который использует индексы 0-based в течение нескольких месяцев).
Вы можете использовать метод AbstractDateTime#toString( pattern ) для форматирования даты в указанном формате:
DateTime date = DateTime.now();
String month = date.toString("MMM");
Название месяца из числа
Если вы хотите указать название месяца для определенного номера месяца, вы можете сделать это следующим образом:
int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");
Localize
Приведенный выше подход использует текущую стандартную папку Java JVM для языка имени месяца. Вместо этого вы хотите указать объект Locale.
String month = date.toString( "MMM", Locale.CANADA_FRENCH );
		Ответ 8
 Month::getDisplayName
  Начиная с Java 8, используйте перечисление  Month. Метод  getDisplayName автоматически локализует название месяца.
Проходить:
-   
TextStyleчтобы определить, как долго или как сокращенно. -   
Localeуказывающая человеческий язык, используемый при переводе, и культурные нормы, используемые для сокращения, пунктуации и т.д. 
Пример:
public static String getMonthStandaloneName(Month month) {
    return month.getDisplayName(
        TextStyle.FULL_STANDALONE, 
        Locale.getDefault()
    );
}
		Ответ 9
Это может быть старый вопрос, но, как один лайнер, чтобы получить имя месяца, когда мы знаем индексы, я использовал
String month = new DateFormatSymbols().getMonths()[monthNumber - 1];
или для коротких имен
String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];
Помните, что ваш monthNumber начинает отсчет с 1, а любой из вышеперечисленных методов возвращает массив, поэтому вам нужно начинать подсчет с 0.
Ответ 10
Этот код имеет языковую поддержку. Я использовал их в приложении для Android.
String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,... 
String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
		Ответ 11
Вы можете получить одну строку следующим образом:
String monthName = new DataFormatSymbols.getMonths()[cal.get(Calendar.MONTH)]
Ответ 12
Это работает для меня:
String getMonthName(int monthNumber) {
    String[] months = new DateFormatSymbols().getMonths();
    int n = monthNumber-1;
    return (n >= 0 && n <= 11) ? months[n] : "wrong number";
}
Возвращает "September" с одной строкой:
String month = getMonthName(9);
		Ответ 13
В одну сторону:
 У нас есть Month API на Java (java.time.Month). Мы можем получить с помощью Month.of(month);
 Здесь Month индексируется в виде чисел, поэтому вы можете Month.JANUARY или Month.JANUARY индекс в вышеприведенном API, например 1, 2, 3, 4.
Второй способ:
ZonedDateTime.now().getMonth();
  Это доступно в java.time.ZonedDateTime.
Ответ 14
Я создал расширение kotlin, основанное на ответах в этой теме, и используя ответы DateFormatSymbols, вы получите локализованный ответ.
fun Date.toCalendar(): Calendar {
    val calendar = Calendar.getInstance()
    calendar.time = this
    return calendar
}
fun Date.getMonthName(): String {
    val month = toCalendar()[Calendar.MONTH]
    val dfs = DateFormatSymbols()
    val months = dfs.months
    return months[month]
}
		Ответ 15
Я нашел это намного проще (https://docs.oracle.com/javase/tutorial/datetime/iso/enum.html)
private void getCalendarMonth(Date date) {      
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    Month month = Month.of(calendar.get(Calendar.MONTH));       
    Locale locale = Locale.getDefault();
    System.out.println(month.getDisplayName(TextStyle.FULL, locale));
    System.out.println(month.getDisplayName(TextStyle.NARROW, locale));
    System.out.println(month.getDisplayName(TextStyle.SHORT, locale));
}
		Ответ 16
DateFormat date =  new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));
		Ответ 17
Возвращает английское название месяца. 04 возвращает АПРЕЛЬ и так далее.
String englishMonth (int month){
        return Month.of(month);
    }
		Ответ 18
Это сработало для меня
        import java.text.SimpleDateFormat;
        import java.util.Calendar;
        Calendar cal = Calendar.getInstance();
        String currentdate=new SimpleDateFormat("dd-MMM").format(cal.getTime());
		Ответ 19
из java-документа SimpleDateFormat:
*         <td><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
 *         <td><code>02001.July.04 AD 12:08 PM</code>
 *         <td><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
 *         <td><code>Wed, 4 Jul 2001 12:08:56 -0700</code>