広告

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));

まずは、現在の日付を取得してみましょう。
もし、デフォルトのタイムゾーンでよければ、LocalDatenow メソッドを使います。

// 日本のデフォルト・タイムゾーンは Asia/Tokyo(JST) です。
final var zoneId = ZoneId.systemDefault();
System.out.println(zoneId); // Asia/Tokyo

// 現在時刻 2023/5/10 (水曜日) に実行した結果です。
final var localDate = LocalDate.now();
System.out.println(localDate); // 2023-05-10

次に、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 は金曜日ということが取得できました。

LocalDate 以外にも、例えば タイムゾーン つきの日時である ZonedDateTime でも同じです。

final var zonedDateTime = ZonedDateTime.of(2000, 1, 1, 0, 0, 0, 0, ZoneId.of("Asia/Tokyo"));
System.out.println(zonedDateTime); // 2000-01-01T00:00+09:00[Asia/Tokyo]

final var dayOfWeek = zonedDateTime.getDayOfWeek();
System.out.println(dayOfWeek); // SATURDAY
System.out.println(dayOfWeek.getDisplayName(TextStyle.FULL, Locale.getDefault())); // 土曜日

まとめ

簡単にですが、現在の曜日を取得する方法を解説いたしました。

基本的には、日付関連のクラス

のオブジェクトが取得できれば、getDayOfWeek メソッドを使い曜日を取得できます。


関連記事

ページの先頭へ