Joda Time または Java 自体に、整数または文字列 (4 または "4" など) を引数として取り、月の名前を短い形式 (つまり、1 月の JAN) で返すメソッドがあるかどうかを知っている人はいますか?
長い月名は切り捨てて大文字に変換できると思います。
Jonの回答に応えて、Jodaのdatetimeクラスへの直接アクセスを使用することで、それをさらに簡素化できます。
String month = date.toString("MMM");
Joda では "MMM" で月名が表示されると思いますが、最初に適切なフォーマッタを構築する必要があります。私のボックスに「Apr」を印刷するサンプルコードを次に示します。(もちろん、関連するロケールを指定できます。)
import org.joda.time.*;
import org.joda.time.format.*;
public class Test
{
public static void main(String[] args)
{
// Year and day will be ignored
LocalDate date = new LocalDate(2010, 4, 1);
DateTimeFormatter formatter = DateTimeFormat.forPattern("MMM");
String month = formatter.print(date);
System.out.println(month);
}
}
次のようにできます。
DateTime dt = new DateTime(); // current time
String monthStr = dt.month().getAsShortText(); // gets the month name
getAsText()
また、長い月名にもメソッドを使用できます。
これを使用することについての私の最後の答えjava.util.Calendar
は、必要以上に複雑でした。これはより単純なバージョンですが、それでも Java 6 以降が必要です。
import java.util.Calendar;
import java.util.Locale;
public class Test
{
public static void main(String[] args)
{
// Sample usage.
// Should be "Apr" in English languages
String month = getMonthNameShort(4);
System.out.println(month);
}
/**
* @param month Month number
* @return The short month name
*/
public static String getMonthNameShort(int month)
{
Calendar cal = Calendar.getInstance();
// Calendar numbers months from 0
cal.set(Calendar.MONTH, month - 1);
return cal.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault());
}
}