JavaのLocalDateTime.getDayOfWeekメソッドを完全ガイド!初心者でもわかる曜日の取り出し方
生徒
「先生、Javaで今日が何曜日なのかを調べる方法ってありますか?」
先生
「あるよ。JavaのLocalDateTimeクラスにはgetDayOfWeekという便利なメソッドが用意されていて、簡単に曜日を取り出せるんだ。」
生徒
「へえ!日付から曜日を直接取り出せるんですね。どうやって使うんですか?」
先生
「それじゃあ、基本から丁寧に解説していこう。サンプルコードも一緒に紹介するね。」
1. java.timeパッケージとは
「1. java.timeパッケージとは」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
java.timeパッケージはJava8以降に追加された新しい日付と時刻APIで、従来のDateやCalendarより直感的に扱えるのが特徴です。特に業務システムやWebアプリケーションでは日付処理や時間処理が必須なので、初心者のうちからjava.timeを学んでおくと後々とても役立ちます。
2. LocalDateTimeクラスの基本
LocalDateTimeは「日付」と「時間」をまとめて表現するクラスです。例えば「2025年9月23日 15時30分」というように年月日と時刻を一つのオブジェクトとして扱えます。LocalDateが日付だけ、LocalTimeが時間だけを扱うのに対して、LocalDateTimeは両方を持つのが大きな特徴です。
3. getDayOfWeekメソッドとは
getDayOfWeekはLocalDateTimeから「曜日」を取り出すメソッドです。返り値はDayOfWeekという列挙型で、MONDAYやSUNDAYといった定数として曜日が表されます。例えば「2025年9月23日」は火曜日なので、TUESDAYが返ってきます。
import java.time.LocalDateTime;
import java.time.DayOfWeek;
public class GetDayOfWeekExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
DayOfWeek dayOfWeek = now.getDayOfWeek();
System.out.println("今日の曜日は: " + dayOfWeek);
}
}
今日の曜日は: TUESDAY
4. 曜日を日本語で表示する方法
「4. 曜日を日本語で表示する方法」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
getDayOfWeekの結果は英語の列挙型なので、そのまま出力すると「MONDAY」「TUESDAY」のようになります。実際のアプリケーションでは日本語で「月曜日」「火曜日」と表示したいことが多いので、getValue()メソッドを使って数値化し、自分でマッピングする方法があります。
import java.time.LocalDateTime;
import java.time.DayOfWeek;
public class DayOfWeekJapaneseExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
DayOfWeek dayOfWeek = now.getDayOfWeek();
String[] jpDays = {"月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"};
String jpDay = jpDays[dayOfWeek.getValue() - 1];
System.out.println("今日の曜日は: " + jpDay);
}
}
今日の曜日は: 火曜日
5. getDayOfWeekの実用例
曜日を取得できると、ビジネスシステムやWebサービスで幅広く活用できます。例えばスケジュール管理アプリでは「月曜日から金曜日までの平日のみ有効」といった判定ができますし、予約システムでは「土曜日と日曜日だけ料金を変える」といった処理も可能です。
6. getDayOfWeekと他のメソッドとの違い
LocalDateTimeにはgetDayOfMonth()やgetDayOfYear()といった日付を取り出すメソッドがあります。これらは数字を返すのに対し、getDayOfWeek()は曜日を列挙型で返すという違いがあります。曜日に特化した処理を行うときには必ずgetDayOfWeekを使うと便利です。
7. 条件分岐で使う例
「7. 条件分岐で使う例」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
実際のコードでは曜日を判定して処理を分けることがよくあります。例えば「日曜日はお休み」といった処理を追加することもできます。
import java.time.LocalDateTime;
import java.time.DayOfWeek;
public class HolidayCheckExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
DayOfWeek dayOfWeek = now.getDayOfWeek();
if (dayOfWeek == DayOfWeek.SUNDAY) {
System.out.println("今日はお休みです。");
} else {
System.out.println("今日は出勤日です。");
}
}
}
今日は出勤日です。
8. getDayOfWeekを使うときの注意点
曜日はDayOfWeek列挙型として返るため、数値との比較を行いたい場合はgetValue()を併用する必要があります。また、月曜は1、日曜は7として扱われるので、曜日を数値で管理するときはオフセットに注意が必要です。初心者が混乱しやすいポイントなので覚えておきましょう。
まとめ
LocalDateTime.getDayOfWeekで曜日を取り出す基本
JavaのLocalDateTimeクラスに用意されているgetDayOfWeekメソッドは、日付と時刻の情報から曜日を取り出すための便利なメソッドです。Javaで日付処理を行う場面は非常に多く、業務システム、予約システム、勤怠管理システム、スケジュール管理アプリ、ショッピングサイト、カレンダー機能など、さまざまな開発で曜日の判定が必要になります。そのようなときにgetDayOfWeekを使うと、指定した日時が月曜日なのか、火曜日なのか、日曜日なのかを簡単に確認できます。
LocalDateTimeは日付と時刻をまとめて扱うクラスであり、年月日だけでなく時分秒も含めて管理できます。この記事では、LocalDateTimeから曜日を取り出す方法としてgetDayOfWeekを学びました。返り値はDayOfWeekという列挙型で、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY、SUNDAYのような定数として表されます。初心者にとって列挙型という言葉は少し難しく感じるかもしれませんが、曜日のように決まった種類の値を安全に扱うための仕組みだと考えると理解しやすくなります。
Javaの日付処理では、以前からDateやCalendarというクラスが使われてきました。しかし、Java八以降ではjava.timeパッケージが追加され、より分かりやすく安全に日付と時刻を扱えるようになりました。LocalDateTimeやDayOfWeekはその代表的なクラスや列挙型です。これからJavaを学ぶ初心者は、古いDateやCalendarよりも、まずjava.timeパッケージの考え方を覚えると実務でも役立ちます。
曜日を日本語で表示する考え方
getDayOfWeekメソッドをそのまま出力すると、曜日は英語の定数として表示されます。たとえば月曜日ならMONDAY、火曜日ならTUESDAY、日曜日ならSUNDAYのように表示されます。学習用のサンプルとしてはそのままでも問題ありませんが、実際のWebアプリケーションや業務システムでは、利用者に分かりやすいように月曜日や火曜日のような日本語表示に変換することが多くあります。
日本語の曜日を表示したい場合は、DayOfWeekのgetValueメソッドを使って数値を取得し、その数値をもとに配列から日本語の曜日名を取り出す方法があります。getValueでは月曜日が一、火曜日が二、水曜日が三、木曜日が四、金曜日が五、土曜日が六、日曜日が七として扱われます。配列は先頭が零番目から始まるため、曜日の数値から一を引いて取り出す点に注意が必要です。
import java.time.DayOfWeek;
import java.time.LocalDateTime;
public class DayOfWeekSummary {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
DayOfWeek dayOfWeek = now.getDayOfWeek();
String[] japaneseDays = {"月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"};
String japaneseDay = japaneseDays[dayOfWeek.getValue() - 1];
System.out.println("今日の曜日は" + japaneseDay + "です");
}
}
今日の曜日は火曜日です
このようにgetDayOfWeekとgetValueを組み合わせることで、曜日の取得だけでなく、画面表示に適した形へ変換できます。Java初心者は、まず英語の曜日を取得する流れを理解し、その後で日本語表示や条件分岐へ発展させると分かりやすく学習できます。
曜日判定は実務でもよく使われる
曜日の判定は、実際のシステム開発でよく使われます。たとえば予約システムでは、土曜日と日曜日だけ料金を高くしたり、平日だけ予約可能にしたりする処理があります。勤怠管理システムでは、平日出勤、休日出勤、祝日前後の勤務判定などに曜日情報が利用されます。店舗の営業日判定では、日曜日を定休日にしたり、水曜日だけ営業時間を変えたりすることもあります。
そのような処理では、getDayOfWeekで取得したDayOfWeekを条件分岐で判定します。たとえば、日曜日なら休業日、土曜日なら休日料金、月曜日から金曜日なら平日料金というように、曜日ごとに処理を分けることができます。Javaのif文やswitch文と組み合わせることで、業務ルールに合わせた柔軟な処理が書けます。
特にWebサービスでは、利用者に表示する日付情報が重要です。単に日付だけを表示するよりも、曜日を一緒に表示することで利用者にとって分かりやすい画面になります。たとえば二千二十五年九月二十三日火曜日のように表示すれば、カレンダーを見なくても予定を判断できます。getDayOfWeekはそのような画面表示にも役立ちます。
getDayOfMonthやgetDayOfYearとの違い
LocalDateTimeにはgetDayOfWeek以外にも、日付に関係するメソッドがいくつか用意されています。getDayOfMonthはその月の何日かを取得するメソッドであり、getDayOfYearはその年の何日目かを取得するメソッドです。一方で、getDayOfWeekは曜日を取得するメソッドです。名前が似ているため初心者は混乱しやすいですが、それぞれ取得する情報が異なります。
たとえば、九月二十三日という日付に対してgetDayOfMonthを使うと二十三という日付の数字を取得します。getDayOfYearを使うと、その年の一月一日から数えて何日目かを取得します。そしてgetDayOfWeekを使うと、火曜日のような曜日情報を取得します。業務システムで必要な情報に合わせて、適切なメソッドを選ぶことが大切です。
初心者が注意したいポイント
getDayOfWeekを使うときに注意したいのは、返り値が文字列ではなくDayOfWeek列挙型である点です。そのため、単純に日本語の文字列と比較するのではなく、DayOfWeek.SUNDAYやDayOfWeek.MONDAYのような定数と比較するのが基本です。文字列で比較するよりも安全で、入力ミスによる不具合を減らせます。
また、getValueで数値を取得する場合は、月曜日が一で日曜日が七になることを覚えておきましょう。配列と組み合わせるときには、配列の先頭が零番目であるため、数値から一を引く必要があります。この部分はJava初心者がつまずきやすいポイントですが、曜日表示を作るうえではとても大切です。
今回の記事では、java.timeパッケージ、LocalDateTimeクラス、getDayOfWeekメソッド、DayOfWeek列挙型、日本語曜日表示、getValue、条件分岐、平日判定、休日判定について学びました。これらを理解すると、Javaの日付処理がより実践的になります。単に今日の日付を表示するだけでなく、曜日に応じて処理を変えることができるため、より便利なアプリケーションを作れるようになります。
Javaで日付と時刻を扱うときは、どのクラスを使うのか、どのメソッドで何を取得するのかを整理することが重要です。LocalDateTimeは日付と時刻を扱うクラス、getDayOfWeekは曜日を取得するメソッド、DayOfWeekは曜日を表す列挙型です。この三つの関係を理解しておけば、カレンダー機能や予約機能、営業日判定、勤怠管理などの実装に応用できます。
生徒
「getDayOfWeekメソッドを使うと、LocalDateTimeから曜日を取り出せるんですね。」
先生
「その通りです。日付と時刻の情報から曜日を取得できる便利なメソッドです。」
生徒
「そのまま表示すると英語の曜日になるんですね。」
先生
「はい。DayOfWeekの定数として、MONDAYやTUESDAYのように表示されます。」
生徒
「日本語で表示したいときは、getValueを使って配列から取り出す方法があるんですね。」
先生
「そうです。月曜日が一、日曜日が七なので、配列の番号に合わせるときは一を引くことがポイントです。」
生徒
「曜日を使うと、予約システムや勤怠管理にも応用できそうです。」
先生
「その通りです。平日だけ処理する、日曜日は休みにする、土日は料金を変えるなど、実務でもよく使われます。」
生徒
「getDayOfMonthやgetDayOfYearとの違いも整理できました。」
先生
「よく理解できています。getDayOfWeekは曜日、getDayOfMonthは月の中の日付、getDayOfYearは年の中の日数を取得します。」
生徒
「Javaの日付処理は難しいと思っていましたが、役割を分けて覚えると分かりやすいです。」
先生
「とても良い理解です。LocalDateTimeとgetDayOfWeekを使えるようになると、実務的な日付処理に一歩近づけます。」