JavaのLocalDateとgetDayOfMonthの使い方!初心者向け日付の操作ガイド
生徒
「Javaで今日が月の何日なのかを知るには、どうすればいいんですか?」
先生
「それならLocalDateクラスのgetDayOfMonthメソッドを使えば簡単に取得できますよ。」
生徒
「えっ、そんなメソッドがあるんですね!使い方を教えてください!」
先生
「よし、じゃあjava.timeパッケージの基本から、getDayOfMonthメソッドの具体的な使い方までしっかり学んでいきましょう。」
1. java.timeパッケージとは?
「1. java.timeパッケージとは?」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
Javaのjava.timeパッケージは、Java8以降で使える日付と時刻を扱うための標準ライブラリです。それまでよく使われていたjava.util.DateやCalendarに代わる、より使いやすく安全なAPIとして登場しました。
java.timeには、LocalDate(日付のみ)、LocalTime(時刻のみ)、LocalDateTime(日付+時刻)などのクラスがあり、用途に応じて使い分けられます。
2. LocalDateクラスの基本
LocalDateクラスは、「年月日」の情報を扱うためのクラスです。時間やタイムゾーンの情報は含みません。例えば、誕生日や祝日などの固定の日付を扱いたいときに便利です。
現在の日付を取得するには、以下のように記述します。
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
System.out.println("今日の日付: " + today);
}
}
今日の日付: 2025-09-04
LocalDate.now()を使えば、システムの日付を簡単に取得できます。
3. getDayOfMonthメソッドとは?
getDayOfMonthメソッドは、LocalDateのインスタンスから「月の何日か」を整数で取得するメソッドです。例えば、2025年9月4日であれば「4」が返されます。
使い方はとても簡単で、以下のように記述します。
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2025, 9, 4);
int day = date.getDayOfMonth();
System.out.println("月の日付: " + day);
}
}
月の日付: 4
getDayOfMonthは、月の中で何日目かを知りたいときにとても便利です。日付による条件分岐などにも使えます。
4. よく使う関連メソッドも覚えよう
「4. よく使う関連メソッドも覚えよう」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
LocalDateには他にも、便利な日付取得メソッドが多数用意されています。以下はその一例です。
- getYear():年を取得(例:2025)
- getMonth():月の列挙型を取得(例:SEPTEMBER)
- getMonthValue():月の数値(例:9)
- getDayOfWeek():曜日(例:THURSDAY)
これらを組み合わせれば、カレンダーのようなUI表示や、バッチ処理のスケジュール条件なども柔軟に組み立てられます。
5. 今日が月末かを判定する方法
getDayOfMonthを使って、今日が月末かどうかを調べる方法を紹介します。
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
int todayDay = today.getDayOfMonth();
int lastDay = today.lengthOfMonth();
if (todayDay == lastDay) {
System.out.println("今日は月末です");
} else {
System.out.println("今日は月末ではありません");
}
}
}
今日は月末ではありません
lengthOfMonth()を使えば、現在の月が何日あるかを取得できます。それとgetDayOfMonth()を比較すれば、月末かどうかを簡単に判断できます。
6. getDayOfMonthを活用する実例
getDayOfMonthメソッドは、日付に関するロジックを組む場面で役立ちます。例えば以下のようなケースです:
- 月の初めや月末にだけ特別な処理をしたい場合
- 毎月10日や20日にメール送信するようなスケジュール設定
- 日付の入力チェックで1〜31の範囲を確認したいとき
Javaでは、こうした日付の計算が非常に簡単にできるようになっており、業務アプリケーションでもよく使われます。
7. 開発現場での実用例と注意点
「7. 開発現場での実用例と注意点」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
開発の現場では、getDayOfMonthを使って帳票の締め処理やレポート生成タイミングの条件分岐などにも利用されます。
ただし、月によって日数が異なるため、ロジックを書くときにはlengthOfMonth()などと組み合わせて使うことがポイントです。特にうるう年の2月などでは28日や29日で変化します。
また、ユーザー入力を使って日付を生成する場合は、日付が正しいかtry-catchやDateTimeParseExceptionでエラーハンドリングすることも重要です。
まとめ
JavaのLocalDateとgetDayOfMonthメソッドを理解すると、日付の中から月の何日かを簡単に取得できるようになります。LocalDateは年月日だけを扱うクラスで、時刻やタイムゾーンを含まないため、誕生日、締め日、支払日、予約日、営業日、月末判定などの日付処理に向いています。Javaで日付を扱う場合、以前はDateやCalendarを使うことが多くありましたが、現在のJava開発ではjava.timeパッケージのLocalDateを使うのが分かりやすく安全です。
getDayOfMonthは、LocalDateの中から月の日付部分だけを整数で取得するメソッドです。たとえば二千二十五年九月四日であれば四、二千二十五年十二月三十一日であれば三十一を取得できます。月初かどうか、月末かどうか、毎月十日に処理を実行するかどうかなど、日付を条件分岐に使いたい場面でとても役立ちます。
日付処理では、月によって日数が違う点に注意が必要です。一月は三十一日、二月は二十八日または二十九日、四月は三十日というように月ごとに最終日が変わります。そのため、月末を判定したい場合はgetDayOfMonthだけでなく、lengthOfMonthと組み合わせることが大切です。うるう年の二月にも対応できるため、業務アプリケーションでも安心して使えます。
getDayOfMonthの基本を確認
getDayOfMonthは、LocalDateオブジェクトに対して呼び出すだけで、月の何日かを取得できます。戻り値はint型なので、if文の条件分岐や計算処理にそのまま利用できます。
import java.time.LocalDate;
public class DayOfMonthExample {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2025, 9, 4);
int day = date.getDayOfMonth();
System.out.println("月の日付: " + day);
}
}
月の日付: 4
このように、LocalDate.ofで指定した日付から日だけを取り出せます。年や月を取得したい場合はgetYearやgetMonthValue、曜日を取得したい場合はgetDayOfWeekを使います。LocalDateの関連メソッドを一緒に覚えることで、日付操作の幅が広がります。
月末判定で使う実践例
実務では、月末だけ請求処理を行う、月末にレポートを作成する、月末締めの集計を行うといった処理があります。そのような場合は、getDayOfMonthで今日の日付を取得し、lengthOfMonthでその月の最終日を取得して比較します。
import java.time.LocalDate;
public class MonthEndCheckExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
int todayDay = today.getDayOfMonth();
int lastDay = today.lengthOfMonth();
if (todayDay == lastDay) {
System.out.println("今日は月末です");
} else {
System.out.println("今日は月末ではありません");
}
}
}
今日は月末ではありません
lengthOfMonthは、その月が何日まであるかを返します。二月やうるう年にも対応しているため、自分で二十八日、二十九日、三十日、三十一日を判定する必要がありません。Javaの日付処理では、このように標準メソッドを組み合わせることで、間違いにくいコードを書けます。
毎月決まった日に処理する例
getDayOfMonthは、毎月決まった日に処理を行いたい場合にも便利です。たとえば毎月十日にお知らせメールを送信する、毎月二十五日に給与処理を行う、毎月一日に月初処理を行うといった条件分岐に使えます。
import java.time.LocalDate;
public class ScheduleCheckExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
if (today.getDayOfMonth() == 10) {
System.out.println("毎月10日の処理を実行します");
} else {
System.out.println("今日は対象日ではありません");
}
}
}
今日は対象日ではありません
このように、getDayOfMonthを使うと、日付の条件分岐を読みやすく書けます。業務システムでは、締め日、支払日、請求日、通知日など、月の日付を使った判定が多いため、覚えておくと実務でも役立ちます。
日付入力を扱うときの注意点
ユーザーが入力した文字列からLocalDateを作成する場合は、不正な日付に注意が必要です。たとえば存在しない日付や形式が違う文字列を渡すと、例外が発生することがあります。そのため、DateTimeParseExceptionを使ってエラー処理を行うと安全です。
import java.time.LocalDate;
import java.time.format.DateTimeParseException;
public class DateParseExample {
public static void main(String[] args) {
String input = "2025-09-04";
try {
LocalDate date = LocalDate.parse(input);
System.out.println("日付: " + date);
System.out.println("月の日付: " + date.getDayOfMonth());
} catch (DateTimeParseException e) {
System.out.println("日付の形式が正しくありません");
}
}
}
日付: 2025-09-04
月の日付: 4
Webアプリケーションで日付入力を扱う場合、利用者が必ず正しい形式で入力するとは限りません。日付の変換、入力チェック、エラーメッセージの表示まで考えることで、使いやすく安全なJavaプログラムになります。
Java、LocalDate、java.time、getDayOfMonth、日付操作、日付取得、月の日付、月末判定、lengthOfMonth、getYear、getMonthValue、getDayOfWeek、うるう年、締め日、請求処理、バッチ処理、日付入力チェック、DateTimeParseExceptionといったキーワードは、Javaの日付処理を学ぶうえで重要です。これらを関連づけて理解すると、単に日付を表示するだけでなく、業務で必要な条件分岐やスケジュール処理にも応用できます。
初心者は、まずLocalDate.nowで今日の日付を取得し、getDayOfMonthで日だけを取り出す練習から始めるとよいです。次にLocalDate.ofで任意の日付を作り、getYear、getMonthValue、getDayOfWeekなどの関連メソッドも試してみましょう。その後、lengthOfMonthと組み合わせて月末判定を行うと、実務に近い日付処理が身につきます。
JavaのLocalDateとgetDayOfMonthは、日付を扱う基本として非常に重要です。年月日のうち日だけを取得できるため、毎月決まった日の処理や月末処理、カレンダー表示、入力チェックなど幅広く活用できます。日付処理は小さなミスが業務上の大きな問題につながることもあるため、標準ライブラリのメソッドを正しく使い、読みやすく安全なコードを書くことを意識しましょう。
生徒
LocalDateは、年月日だけを扱うJavaの日付クラスだと分かりました。
先生
その通りです。時刻を含まない日付だけを扱いたいときに便利です。
生徒
getDayOfMonthを使うと、その日付が月の何日なのかをint型で取得できるのですね。
先生
はい。たとえば九月四日なら四、十二月三十一日なら三十一を取得できます。
生徒
月末かどうかを判定するときは、getDayOfMonthだけでなくlengthOfMonthも使うのですね。
先生
はい。lengthOfMonthでその月の最終日を取得し、今日の日付と比較すれば月末判定ができます。
生徒
二月やうるう年も自動で考慮してくれるので、自分で月の日数を細かく書かなくてよいのですね。
先生
その理解で大丈夫です。java.timeの標準メソッドを使うことで、間違いにくい日付処理になります。
生徒
毎月十日だけ処理するような条件分岐にも、getDayOfMonthが使えることが分かりました。
先生
はい。請求日、締め日、通知日、バッチ処理など、業務システムでもよく使われます。
生徒
ユーザー入力から日付を作る場合は、DateTimeParseExceptionでエラー処理も考えたほうがよいですね。
先生
その通りです。正しくない日付が入力されることもあるため、例外処理まで含めて安全な日付操作を行いましょう。