[java] 캘린더에서 월 이름을 얻는 방법

우리가 알고있는 달의 이름을 알 수있는 oneliner가 int monthNumber = calendar.get(Calendar.MONTH)있습니까? 아니면 가장 쉬운 방법은 무엇입니까?



답변

이 방법으로도 얻을 수 있습니다.

  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을 사용하여 표시 언어 제어와 함께 월 이름을 표시 할 수 있습니다.

다음은 “시리아”와 같은 특정 국가에서 월 이름을 영어, 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

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 );