JavaのLocalDateとgetDayOfWeekの使い方を完全ガイド!初心者でもわかる日付と曜日の取得方法
生徒
「Javaで今日の日付から曜日を取得する方法ってありますか?」
先生
「はい、Javaのjava.timeパッケージにあるLocalDateクラスを使えば、簡単に曜日を取得できますよ。」
生徒
「具体的にどんなコードを書けばいいんですか?」
先生
「それでは、getDayOfWeekメソッドの使い方を中心に見ていきましょう。」
1. java.timeパッケージとは?
Javaのjava.timeパッケージは、Java 8から導入された新しい日付と時刻のAPIを提供するパッケージです。従来のjava.util.Dateやjava.util.Calendarと比較して、より直感的で扱いやすい構文が特徴です。
java.timeパッケージには、LocalDateやLocalTime、LocalDateTimeなど、さまざまな時間操作用のクラスが含まれており、日付や時間の処理を簡単に行えるようになっています。
2. LocalDateクラスとは?
LocalDateクラスは、年月日だけを扱う日付専用のクラスです。時刻やタイムゾーンの情報は含まれていないため、「日付」だけを対象にした操作に最適です。
例えば、今日の日付を取得するには、次のように記述します。
import java.time.LocalDate;
public class TodayExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
System.out.println("今日の日付: " + today);
}
}
3. getDayOfWeekメソッドの基本的な使い方
getDayOfWeekメソッドは、LocalDateのインスタンスから曜日情報を取得するメソッドです。このメソッドはDayOfWeekという列挙型(enum)を返します。
たとえば、今日の曜日を取得したい場合は以下のように記述します。
import java.time.LocalDate;
import java.time.DayOfWeek;
public class DayOfWeekExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
DayOfWeek dayOfWeek = today.getDayOfWeek();
System.out.println("今日は " + dayOfWeek + " です。");
}
}
このコードを実行すると、英語表記で曜日が出力されます。たとえば、「MONDAY」や「FRIDAY」といった形式です。
4. 日本語の曜日を表示するには?
日本語で「月曜日」「火曜日」といった表示をしたい場合、DayOfWeekの数値を元に自前で変換する必要があります。以下にその例を紹介します。
import java.time.LocalDate;
import java.time.DayOfWeek;
public class JapaneseDayOfWeek {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
DayOfWeek dayOfWeek = today.getDayOfWeek();
String[] japaneseDays = {
"月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"
};
int index = dayOfWeek.getValue() % 7; // 月=1, 日=7 → 日曜日を最後に
System.out.println("今日は " + japaneseDays[index] + " です。");
}
}
今日は 木曜日 です。
getValue()はDayOfWeekの数値(1〜7)を返します。1は月曜日、7は日曜日です。日本のカレンダー表記と一致させたい場合、曜日配列の順序を工夫する必要があります。
5. 指定した日付の曜日を取得する
「2025年12月25日」のような特定の日付の曜日を調べたい場合も、LocalDateを使えば簡単に実現できます。
import java.time.LocalDate;
import java.time.DayOfWeek;
public class SpecificDateExample {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2025, 12, 25);
DayOfWeek dayOfWeek = date.getDayOfWeek();
System.out.println("2025年12月25日は " + dayOfWeek + " です。");
}
}
6. getDayOfWeekを活用した曜日チェック処理
曜日ごとに処理を分けたい場合にもgetDayOfWeekは便利です。以下のようにswitch文を使って、曜日別の処理を実装できます。
import java.time.LocalDate;
import java.time.DayOfWeek;
public class ScheduleExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
DayOfWeek day = today.getDayOfWeek();
switch (day) {
case MONDAY -> System.out.println("今週の始まりですね。");
case FRIDAY -> System.out.println("やっと金曜日です!");
case SUNDAY -> System.out.println("ゆっくり休みましょう。");
default -> System.out.println("平日モードです。");
}
}
}
7. java.timeとLocalDate・getDayOfWeekを使うメリット
java.timeパッケージのLocalDateとgetDayOfWeekを使うことで、日付や曜日の取得・判定がシンプルかつ明確になります。
- 旧APIの
Calendarよりコードが読みやすい - スレッドセーフであるため、安全に利用可能
- 日付操作が直感的に行える
これらの特徴は、業務アプリケーションやWebサービスなど幅広い用途で活用できます。