Как получить название месяца из календаря
есть ли oneliner, чтобы получить имя месяца, когда мы знаем int monthNumber = calendar.get(Calendar.MONTH)
? Или какой самый простой способ?
15 ответов:
вы также получите этот путь.
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; }
вы можете достичь этого с помощью SimpleDateFormat, которая предназначена для форматирования даты и времени.
Calendar cal = Calendar.getInstance(); System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
просто
mCalendar = Calendar.getInstance(); String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
это решение, которое я придумал для проекта класса:
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
звонок.
Если у вас есть многоязычный интерфейс, вы можете использовать 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
Joda Времени
как насчет использования Joda Времени. Это гораздо лучший API даты и времени для работы (и
January
здесь означает январь. Это не похоже на календарь, который использует в течение месяца).можно использовать
AbstractDateTime#toString( pattern )
метод форматирования даты в указанном формате:DateTime date = DateTime.now(); String month = date.toString("MMM");
Название Месяца Из Числа
если вы хотите название месяца для конкретного номера месяца, вы можете сделать это так:
int month = 3; String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");
локализация
в приведенном выше подходе используется текущая Локаль JVM по умолчанию для языка имени месяца. Вместо этого необходимо указать объект Locale.
String month = date.toString( "MMM", Locale.CANADA_FRENCH );
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() ); dateFormat.format( date );
для некоторых языков (например, русского) это единственный правильный способ получить автономный названий месяцев.
это то, что вы получаете, Если вы используете
getDisplayName
СCalendar
илиDateFormatSymbols
за январь:января (что верно для полной строки даты:"10 января,")
но в случае автономного названия месяца вы ожидаете:
январь
Начиная С Java 8:
public static String getMonthStandaloneName(Month month) { return month.getDisplayName(TextStyle.FULL_STANDALONE, Locale.getDefault()); }
это может быть старый вопрос, но в качестве одного лайнера, чтобы получить название месяца, когда мы знаем индексы, я использовал
String month = new DateFormatSymbols().getMonths()[monthNumber - 1];
или для коротких имен
String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];
пожалуйста, имейте в виду, что ваш
monthNumber
начинает отсчет с 1, в то время как любой из приведенных выше методов возвращает массив, поэтому вам нужно начать отсчет с 0.
вы можете получить его одну строку, как это:
String monthName = new DataFormatSymbols.getMonths()[cal.get(Calendar.MONTH)]
это работает для меня:
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);
этот код имеет поддержку языка. Я использовал их в Android-приложении.
String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,... String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
DateFormat date = new SimpleDateFormat("dd/MMM/yyyy"); Date date1 = new Date(); System.out.println(date.format(date1));