Java : 現在の曜日(DayOfWeek)を取得
Java で曜日を表すクラス(列挙型)は DayOfWeek です。
本記事では、現在の曜日(DayOfWeek) を取得する方法をご紹介します。
現在の曜日を取得
DayOfWeekは、7曜日(月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日)を表す列挙型です。
曜日を表す列挙型の DayOfWeek には、列挙型定数として
- MONDAY (月曜日)
- TUESDAY (火曜日)
- ...
- SUNDAY (日曜日)
が用意されています。
final var weeks = DayOfWeek.values();
// [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY]
System.out.println(Arrays.toString(weeks));
まずは、現在の日付を取得してみましょう。
もし、デフォルトのタイムゾーンでよければ、LocalDate の now メソッドを使います。
// 日本のデフォルト・タイムゾーンは Asia/Tokyo(JST) です。
final var zoneId = ZoneId.systemDefault();
System.out.println(zoneId); // Asia/Tokyo
// 現在時刻 2022/4/27 (水曜日) に実行した結果です。
final var localDate = LocalDate.now();
System.out.println(localDate); // 2022-04-27
次に、LocalDate の getDayOfWeek を使い、曜日を取得します。
final var dayOfWeek = localDate.getDayOfWeek();
System.out.println(dayOfWeek); // WEDNESDAY
無事に、現在の曜日である水曜日(WEDNESDAY) が取得できました。
曜日を日本語で表示したい場合は、DayOfWeek の getDisplayName を使います。
もしくは 書式文字列 でも可能です。
// デフォルトのロケール(日本語)で表示します。
final var locale = Locale.getDefault();
System.out.println(locale); // ja_JP
System.out.println(dayOfWeek.getDisplayName(TextStyle.FULL, locale)); // 水曜日
System.out.println(dayOfWeek.getDisplayName(TextStyle.SHORT, locale)); // 水
// 書式文字列の例です。
System.out.printf("今日は %tA です。%n", dayOfWeek); // 今日は 水曜日 です。
DayOfWeek は列挙型なので、条件分岐させたい場合は switch式 が便利です。
final var dayOfWeek = LocalDate.now().getDayOfWeek();
System.out.println(dayOfWeek); // WEDNESDAY
final var ret = switch (dayOfWeek) {
case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> "今日は平日!";
case SATURDAY, SUNDAY -> "今日は休日!";
};
System.out.println(ret); // 今日は平日!
指定した日付の曜日を取得
現在の曜日ではなく、指定した日付の曜日を取得したいこともあるかと思います。
その場合は、LocalDate を now ではなく、of で生成します。
// 1999/1/1 (金曜日) の LocalDate を生成します。
final var localDate = LocalDate.of(1999, 1, 1);
System.out.println(localDate); // 1999-01-01
final var dayOfWeek = localDate.getDayOfWeek();
System.out.println(dayOfWeek); // FRIDAY
System.out.println(dayOfWeek.getDisplayName(TextStyle.FULL, Locale.getDefault())); // 金曜日
1999/1/1 は金曜日ということが取得できました。
まとめ
簡単にですが、現在の曜日を取得する方法を解説いたしました。
基本的には、日付関連のクラス
のオブジェクトが取得できれば、getDayOfWeek メソッドを使い曜日を取得できます。
関連記事