정수를 얻고 다양한 로케일의 월 이름으로 변환해야합니다.
로케일 en-us의 예 :
1-> 1 월
2 일-> 2 월
로케일 es-mx의 예 :
1-> Enero
2-> Febrero
답변
import java.text.DateFormatSymbols;
public String getMonth(int month) {
return new DateFormatSymbols().getMonths()[month-1];
}
답변
독립형 월 이름에는 LLLL을 사용해야합니다. 이것은 다음 SimpleDateFormat
과 같은 문서에 문서화되어 있습니다.
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );
답변
tl; dr
Month // Enum class, predefining and naming a dozen objects, one for each month of the year.
.of( 12 ) // Retrieving one of the enum objects by number, 1-12.
.getDisplayName(
TextStyle.FULL_STANDALONE ,
Locale.CANADA_FRENCH // Locale determines the human language and cultural norms used in localizing.
)
java.time
Java 1.8 (또는 ThreeTen-Backport 가있는 1.7 및 1.6 )부터 다음을 사용할 수 있습니다.
Month.of(integerMonth).getDisplayName(TextStyle.FULL_STANDALONE, locale);
주 integerMonth
1 기반 1 월입니다 즉. 범위는 1 월 -12 월의 경우 항상 1-12입니다 (예 : 그레고리력 만 해당).
답변
SimpleDateFormat을 사용합니다. 누군가가 월별 달력을 만드는 더 쉬운 방법이 있다면 나를 바로 잡으십시오. 나는 지금 코드에서 이것을하고 나는 그렇게 확신하지 않습니다.
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public String formatMonth(int month, Locale locale) {
DateFormat formatter = new SimpleDateFormat("MMMM", locale);
GregorianCalendar calendar = new GregorianCalendar();
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.MONTH, month-1);
return formatter.format(calendar.getTime());
}
답변
내가 할 방법은 다음과 같습니다. 범위 확인은 int month
당신에게 맡기겠습니다 .
import java.text.DateFormatSymbols;
public String formatMonth(int month, Locale locale) {
DateFormatSymbols symbols = new DateFormatSymbols(locale);
String[] monthNames = symbols.getMonths();
return monthNames[month - 1];
}
답변
SimpleDateFormat 사용.
import java.text.SimpleDateFormat;
public String formatMonth(String month) {
SimpleDateFormat monthParse = new SimpleDateFormat("MM");
SimpleDateFormat monthDisplay = new SimpleDateFormat("MMMM");
return monthDisplay.format(monthParse.parse(month));
}
formatMonth("2");
결과 : 2 월
답변
분명히 Android 2.2에는 SimpleDateFormat에 버그가 있습니다.
월 이름을 사용하려면 리소스에서 직접 정의해야합니다.
<string-array name="month_names">
<item>January</item>
<item>February</item>
<item>March</item>
<item>April</item>
<item>May</item>
<item>June</item>
<item>July</item>
<item>August</item>
<item>September</item>
<item>October</item>
<item>November</item>
<item>December</item>
</string-array>
그런 다음 다음과 같이 코드에서 사용하십시오.
/**
* Get the month name of a Date. e.g. January for the Date 2011-01-01
*
* @param date
* @return e.g. "January"
*/
public static String getMonthName(Context context, Date date) {
/*
* Android 2.2 has a bug in SimpleDateFormat. Can't use "MMMM" for
* getting the Month name for the given Locale. Thus relying on own
* values from string resources
*/
String result = "";
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.MONTH);
try {
result = context.getResources().getStringArray(R.array.month_names)[month];
} catch (ArrayIndexOutOfBoundsException e) {
result = Integer.toString(month);
}
return result;
}