JavaのLocalDateクラスのgetMonthメソッドを徹底解説!初心者でもわかる月の取得方法
生徒
「Javaで日付から月だけを取り出したいときって、どうすればいいですか?」
先生
「そんなときは、LocalDateクラスのgetMonthメソッドを使うと、簡単に月情報が取得できるよ。」
生徒
「それって数字の“9”とかが返ってくる感じですか?」
先生
「実はgetMonthは数字じゃなくて、Month型という特別な値を返すんだ。具体例を見ながら学んでいこう!」
1. java.timeパッケージとLocalDateクラスとは?
「1. java.timeパッケージとLocalDateクラスとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
java.timeパッケージは、Java 8から追加された日付と時刻を扱うためのAPIセットです。従来のDateやCalendarの問題点を解決し、より直感的でバグの少ないコードが書けるようになっています。
中でもLocalDateクラスは、年月日だけを扱いたい場合に非常に便利です。タイムゾーンや時刻の情報を持たず、カレンダー上の日付だけを明確に表現できます。
現在の日付を取得するには、以下のように書きます。
import java.time.LocalDate;
public class TodayExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
System.out.println("今日の日付: " + today);
}
}
2. LocalDateのgetMonthメソッドとは?
getMonthメソッドは、LocalDateから「月」の情報を取得するためのメソッドです。このメソッドは数値ではなく、java.time.Monthという列挙型(enum)を返します。
このMonthは、JANUARY、FEBRUARY、MARCHなど、英語の月名で構成されていて、コードの可読性を高めるのに役立ちます。
import java.time.LocalDate;
import java.time.Month;
public class GetMonthExample {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2025, 9, 4);
Month month = date.getMonth();
System.out.println("月: " + month);
}
}
月: SEPTEMBER
3. getMonthで返されるMonth列挙型の特徴
getMonthで返ってくるMonth型は、ただの文字列ではありません。enumとして定義されているため、定数として扱えます。
たとえば、Month.JANUARYやMonth.DECEMBERのように書くことで、特定の月をプログラム内で表現できます。これにより、文字列との比較やミスのない月指定が可能になります。
また、MonthにはgetValue()メソッドがあり、月の数値(1〜12)を取得することもできます。
Month month = Month.SEPTEMBER;
int monthNumber = month.getValue();
System.out.println("月の数値: " + monthNumber);
月の数値: 9
4. getMonthとgetMonthValueの違い
「4. getMonthとgetMonthValueの違い」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
LocalDateクラスには、getMonthとgetMonthValueという2つの似たメソッドがあります。
- getMonth:
Month型(JANUARYなど)を返す - getMonthValue:
int型(1〜12)を返す
英語の月名が必要なときはgetMonth、数値で使いたい場合はgetMonthValueを使うと便利です。
LocalDate date = LocalDate.of(2025, 12, 25);
System.out.println("getMonth: " + date.getMonth());
System.out.println("getMonthValue: " + date.getMonthValue());
getMonth: DECEMBER
getMonthValue: 12
5. getMonthを使った条件分岐
Month型は列挙型なので、switch文などでも使いやすいのが特徴です。以下のように、月ごとの処理を明確に記述できます。
LocalDate date = LocalDate.now();
Month month = date.getMonth();
switch (month) {
case JANUARY:
System.out.println("1月です。");
break;
case FEBRUARY:
System.out.println("2月です。");
break;
case MARCH:
System.out.println("3月です。");
break;
// 他の月も同様に続ける
default:
System.out.println("他の月です。");
}
このようにすれば、if文よりも見通しの良いコードが書けます。
6. 月名を日本語にしたいときの工夫
getMonthで得られるのは英語表記(JANUARYなど)ですが、日本語で表示したい場合もありますよね。そういったときは、Month.getValue()で数値を取得して、独自に日本語の月名を定義してあげる方法が一般的です。
String[] jpMonths = {"1月", "2月", "3月", "4月", "5月", "6月",
"7月", "8月", "9月", "10月", "11月", "12月"};
LocalDate date = LocalDate.of(2025, 4, 10);
String monthName = jpMonths[date.getMonthValue() - 1];
System.out.println("日本語の月名: " + monthName);
日本語の月名: 4月
7. getMonthの活用シーン
「7. getMonthの活用シーン」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
getMonthメソッドは、カレンダーアプリや予約システムなどで「今は何月か」を判定して処理を分けたいときに便利です。また、英語で月名を表示したい画面UIでもそのまま使えるため、国際対応のプログラムにも向いています。
さらに、ログ出力やファイル名の命名などで「月」を含めたい場合にも、getMonthやgetMonthValueの併用が役立ちます。