web-dev-qa-db-ja.com

カレンダーから月の名前を取得する方法

int monthNumber = calendar.get(Calendar.MONTH)を知っているときに月の名前を取得するためのライナーが1つありますか?または、最も簡単な方法は何ですか?

82
ogzd

この方法もあります。

  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;
    }
87
subodh

SimpleDateFormatを使用して実現できます。これは、日付と時刻をフォーマットするためのものです。

Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
167
PermGenError

これと同じくらい簡単

mCalendar = Calendar.getInstance();    
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
68
sandalone

これは、クラスプロジェクトのために思いついたソリューションです。

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呼び出しから取得されます。

40
Terry Chern

多言語インターフェースを使用している場合、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
32
Eng. Samer T
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );

一部の言語(ロシア語など)では、これがスタンドアロンの月名を取得する唯一の正しい方法です。

これは、1月にgetDisplayNameまたはCalendarからDateFormatSymbolsを使用した場合に得られるものです。

января(完全な日付文字列に適しています: "10января、2014")

ただし、スタンドアロンの月名の場合は、次のようになります。

январь

15
artkoenig

ジョーダタイム

Joda-Time を使用してみてください。使用するには、はるかに優れた日時APIです(また、Januaryは1月を意味します。これは、0-basedインデックスを月に使用するCalendarとは異なります)。

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 );
11
Rohit Jain

Month::getDisplayName

Java 8以降、 Month enumを使用します。 getDisplayName メソッドは、月の名前を自動的にローカライズします。

パス:

  • TextStyle は、長さまたは短縮方法を決定します。
  • Locale は、翻訳に使用される人間の言語、および略語、句読点などに使用される文化的規範を指定します。

例:

public static String getMonthStandaloneName(Month month) {
    return month.getDisplayName(
        TextStyle.FULL_STANDALONE, 
        Locale.getDefault()
    );
}

これは古い質問かもしれませんが、インデックスを知っている月の名前を取得するための1つのライナーとして、

String month = new DateFormatSymbols().getMonths()[monthNumber - 1];

または短縮名の場合

String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];

monthNumberは1からカウントを開始しますが、上記のメソッドはいずれも配列を返すため、0からカウントを開始する必要があることに注意してください。

7
georger

このコードには言語サポートがあります。 Androidアプリで使用していました。

String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,... 

String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
3
Samet öztoprak

これは私のために働く:

String getMonthName(int monthNumber) {
    String[] months = new DateFormatSymbols().getMonths();
    int n = monthNumber-1;
    return (n >= 0 && n <= 11) ? months[n] : "wrong number";
}

"September"を1行で返すには:

String month = getMonthName(9);
2
jhpg

次のように1行で取得できます:String monthName = new DataFormatSymbols.getMonths()[cal.get(Calendar.MONTH)]

2
Whirvis

片道:

Java(Java.time.Month)にMonth APIがあります。 Month.of(month);を使用して取得できます

ここで、Monthは数値としてインデックス付けされるため、Month.JANUARYで提供するか、上記のAPIで1、2、3、4などのインデックスを提供できます。

2番目の方法:

ZonedDateTime.now().getMonth();

これはJava.time.ZonedDateTimeで利用可能です。

2
kushal baldev

このトピックの応答に基づいて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]
}
1

私はこれをはるかに簡単に見つけました( https://docs.Oracle.com/javase/tutorial/datetime/iso/enum.html

private void getCalendarMonth(Date date) {      
    Calendar 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));
}
0
JibinNajeeb
DateFormat date =  new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));
0
Sanjeev Mishra

月の英語名を返します。 04は、APRILなどを返します。

String englishMonth (int month){
        return Month.of(month);
    }
0
mxhc

これは私のために働いた

        import Java.text.SimpleDateFormat;
        import Java.util.Calendar;


        Calendar cal = Calendar.getInstance();
        String currentdate=new SimpleDateFormat("dd-MMM").format(cal.getTime());
0
mahadev gouda