私たちが知っている月の名前を取得するためのワンライナーはありますか:
int monthNumber = calendar.get(Calendar.MONTH)
または、最も簡単な方法は何ですか?
を使用して実現できますSimpleDateFormat
。これは、日付と時刻をフォーマットするためのものです。
Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
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;
}
これは私がクラスプロジェクトのために思いついた解決策です:
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
している場合は、表示言語を制御して月の名前を表示するために使用できます。
「シリア」のような特定の国で英語、フランス語、アラビア語、アラビア語で月名を表示する例を次に示します。
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 );
一部の言語 (ロシア語など) では、これが独立した月の名前を取得する唯一の正しい方法です。
1 月getDisplayName
からCalendar
またはを使用すると、次のようになります。DateFormatSymbols
января (完全な日付文字列の場合は正しい: " 10 января, 2014 ")
ただし、スタンドアロンの月名の場合は、次のようになります。
にゃんにゃん
Joda-Timeを使用してみてはどうでしょうか。これは、はるかに優れた日時 API です (ここでは 1 月を意味します。月のインデックスJanuary
を使用するカレンダーとは異なります)。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 );
これは私のために働く:
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);
英語の月名を返します。04 は APRIL などを返します。
String englishMonth (int month){
return Month.of(month);
}
DateFormat date = new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));
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>