107

私たちが知っている月の名前を取得するためのワンライナーはありますか:

int monthNumber  = calendar.get(Calendar.MONTH)

または、最も簡単な方法は何ですか?

4

22 に答える 22

208

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

Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
于 2013-02-12T12:05:43.027 に答える
102
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;
}
于 2013-02-12T12:09:15.020 に答える
41

これは私がクラスプロジェクトのために思いついた解決策です:

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通話からのものです。

于 2013-10-31T01:14:55.007 に答える
37

多言語インターフェイスを使用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
于 2015-01-17T17:40:35.467 に答える
17
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );

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

1 月getDisplayNameからCalendarまたはを使用すると、次のようになります。DateFormatSymbols

января (完全な日付文字列の場合は正しい: " 10 января, 2014 ")

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

にゃんにゃん

于 2014-08-15T15:42:18.413 に答える
12

Joda-Time

Joda-Timeを使用してみてはどうでしょうか。これは、はるかに優れた日時 API です (ここでは 1 月を意味します。月のインデックスJanuaryを使用するカレンダーとは異なります)。0-based

メソッドを使用AbstractDateTime#toString( pattern )して、指定した形式で日付をフォーマットできます。

DateTime date = DateTime.now();
String month = date.toString("MMM");

月名 From Number

特定の月番号の月名が必要な場合は、次のようにできます。

int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");

ローカライズ

上記のアプローチでは、月名の言語に JVM の現在のデフォルト ロケールを使用します。代わりに Locale オブジェクトを指定します。

String month = date.toString( "MMM", Locale.CANADA_FRENCH );
于 2013-02-12T12:10:18.073 に答える
2

これは私のために働く:

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

1 行で返す"September"には:

String month = getMonthName(9);
于 2016-09-12T20:09:49.173 に答える
1

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

String englishMonth (int month){
        return Month.of(month);
    }
于 2018-06-28T10:30:38.647 に答える
0
DateFormat date =  new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));
于 2016-10-10T06:16:44.383 に答える
-3

SimpleDateFormat Java doc から:

*         <td><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
 *         <td><code>02001.July.04 AD 12:08 PM</code>
 *         <td><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
 *         <td><code>Wed, 4 Jul 2001 12:08:56 -0700</code>
于 2016-10-31T04:01:47.190 に答える