回答:
あなたもこのようになります。
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を使用して、表示言語を制御して月の名前を表示できます。
「シリア」のような特定の国で月名を英語、フレンチ、アラビア語、アラビア語で表示する例を次に示します。
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
1月に使用した場合に得られるものです。
января(完全な日付文字列として正しい: " 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
列挙型を使用してください。この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));
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>