답변:
이 방법으로도 얻을 수 있습니다.
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
전화 에서 나옵니다 .
new SimpleDateFormat("MMMM").format(cal.getTime());
다국어 인터페이스가있는 경우 getDisplayName을 사용하여 표시 언어 제어와 함께 월 이름을 표시 할 수 있습니다.
다음은 "시리아"와 같은 특정 국가에서 월 이름을 영어, frensh, 아랍어 및 아랍어로 표시하는 예입니다.
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
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );
일부 언어 (예 : 러시아어)의 경우 이것은 독립형 월 이름을 얻는 유일한 올바른 방법입니다.
이것은 당신이 사용하는 경우 당신이 무엇을 얻을 getDisplayName
으로부터 Calendar
또는 DateFormatSymbols
월로 :
января (전체 날짜 문자열 : " 10 января, 2014 ")
그러나 독립형 월 이름의 경우 다음과 같이 예상됩니다.
январь
Joda-Time을 사용하는 것은 어떻습니까 ? 작업하기에 훨씬 더 나은 날짜-시간 API입니다 ( January
여기서는 1 월을 의미합니다. 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");
위의 접근 방식은 월 이름의 언어로 JVM의 현재 기본 로케일을 사용합니다. 대신 Locale 개체를 지정하려고합니다.
String month = date.toString( "MMM", Locale.CANADA_FRENCH );
SimpleDateFormat
과Date
Month::getDisplayName
Java 8부터 Month
enum을 사용하십시오 . 이 getDisplayName
방법은 월 이름을 자동으로 지역화합니다.
통과하다:
예:
public static String getMonthStandaloneName(Month month) {
return month.getDisplayName(
TextStyle.FULL_STANDALONE,
Locale.getDefault()
);
}
이 코드는 언어를 지원합니다. Android 앱에서 사용했습니다.
String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,...
String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
나는 이것이 훨씬 더 쉽다는 것을 알았다 ( 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));
}
Month
1 월 = 1로 색인을 시작 하지 않는 반면 달력은 1 월 = 0으로 시작합니까? Month.of(calendar.get(Calendar.MONTH));
1 월의 경우 실패하지 않을까요 ?
이 주제의 응답을 기반으로 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]
}
DateFormat date = new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));