JavaのLocalDateTime.getDayOfMonthメソッドを完全ガイド!初心者でもわかる日付の取り出し方
生徒
「先生、Javaで今月の日にちだけを取り出す方法ってあるんですか?」
先生
「あるよ。LocalDateTimeクラスのgetDayOfMonthメソッドを使えば、日付部分だけを簡単に取り出せるんだ。」
生徒
「へえ、年や月じゃなくて日だけを取れるんですね!どうやって使うんですか?」
先生
「実際にコードを書いて動かしてみよう。初心者でもわかるように解説するから安心してね。」
1. java.timeパッケージについて
「1. java.timeパッケージについて」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
java.timeパッケージはJava8以降で追加された新しい日付と時刻APIです。従来のDateやCalendarよりもわかりやすく、日時を直感的に扱えるのが特徴です。システム開発で日付処理は必須になるので、java.timeを理解しておくことはプログラマーにとって重要です。
2. LocalDateTimeクラスの役割
LocalDateTimeは日付と時間を保持するクラスで、年、月、日、時、分、秒といった情報をひとまとめに扱えます。例えば「2025年9月23日 15時30分」という情報を一つのオブジェクトで表現できます。タイムゾーン情報は持たないので、日本時間やシステム時間のようにローカルな日時を表現するのに適しています。
3. getDayOfMonthメソッドとは
getDayOfMonthは、LocalDateTimeから「月の日にち」を整数で取り出すメソッドです。例えば「2025年9月23日」であれば「23」を返してくれます。カレンダーアプリや予約システムなどで「今月の何日なのか」を扱う場面でよく使われます。
import java.time.LocalDateTime;
public class GetDayOfMonthExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
int day = now.getDayOfMonth();
System.out.println("今日の日にちは: " + day);
}
}
今日の日にちは: 23
4. getDayOfMonthの活用シーン
「4. getDayOfMonthの活用シーン」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
例えば、勤怠管理システムでは「今日が何日なのか」を調べて、出勤簿に記録したり、月末処理を行うときに役立ちます。また、予約システムでは「選択された日付が何日なのか」を判定して、処理を分けることも可能です。こうした場面でgetDayOfMonthは非常に便利です。
5. サンプルコード:指定日付から取り出す
LocalDateTime.now()だけでなく、自分で指定した日付から日を取り出すこともできます。例えば2025年12月31日を設定して、何日かを確認する例を見てみましょう。
import java.time.LocalDateTime;
public class SpecificDateExample {
public static void main(String[] args) {
LocalDateTime date = LocalDateTime.of(2025, 12, 31, 10, 0);
int day = date.getDayOfMonth();
System.out.println("指定した日付の日にちは: " + day);
}
}
指定した日付の日にちは: 31
6. getDayOfMonthと他のメソッドの違い
LocalDateTimeには、日付関連の取得メソッドがいくつかあります。例えばgetDayOfYear()は「年の何日目か」、getDayOfWeek()は「曜日」を返します。それに対してgetDayOfMonth()は「月の何日目か」を返すという違いがあります。目的に応じて正しいメソッドを選ぶことが重要です。
7. 実務での応用例
「7. 実務での応用例」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
例えば月末処理を行うシステムでは、getDayOfMonthで現在の日にちを確認し、月末日と比較する処理を組み込むことができます。また定期的なイベントの判定にも役立ちます。「毎月15日に実行する」といったスケジュール処理を作る際に、このメソッドが活躍します。
8. getDayOfMonth利用時の注意点
getDayOfMonthは整数を返しますが、月によって最終日が異なる点には注意が必要です。例えば2月は28日や29日、4月は30日、12月は31日です。実際に使うときは、日付範囲外の値を指定しないようにLocalDateTimeの生成時点でバリデーションを行うと安全です。
まとめ
JavaのLocalDateTime.getDayOfMonthメソッドは、日時情報から「月の日にち」だけを取得するための便利なメソッドです。Javaの日時処理では年や月だけでなく、「今日は何日なのか」「指定した日時は何日なのか」といった判定を行う場面が数多くあります。そのようなときにgetDayOfMonthを利用すると、シンプルで分かりやすいコードを書くことができます。
Javaのシステム開発では、勤怠管理システム、予約管理システム、顧客管理システム、販売管理システム、在庫管理システム、ECサイト、カレンダー機能など、さまざまな場面で日付処理が登場します。例えば、毎月25日に請求書を発行する処理や、毎月末に売上集計を実施する処理、毎月1日にポイントを付与する処理などでは、現在の日にちを取得して条件分岐を行う必要があります。そのような実務的な処理を実装するときにも、getDayOfMonthは非常に役立ちます。
LocalDateTimeは、Java8から導入されたjava.timeパッケージに含まれるクラスです。従来のDateクラスやCalendarクラスと比較して扱いやすく、安全に日時を管理できるため、現在のJava開発では標準的に利用されています。日付や時刻を文字列として無理に分解するのではなく、専用メソッドを使って必要な情報を取得することが重要です。
getDayOfMonthの基本的な使い方
getDayOfMonthは非常にシンプルなメソッドです。LocalDateTimeオブジェクトを作成し、そのオブジェクトから日にちを取得するだけで利用できます。戻り値はint型なので、そのまま条件分岐や計算処理に利用できます。
import java.time.LocalDateTime;
public class GetDayOfMonthSample {
public static void main(String[] args) {
LocalDateTime dateTime =
LocalDateTime.of(2025, 12, 31, 10, 30);
int day = dateTime.getDayOfMonth();
System.out.println(day);
}
}
31
このサンプルでは2025年12月31日を作成し、その日にち部分である31を取得しています。年や月ではなく、「その月の何日なのか」を取得する点が特徴です。
現在の日にちを取得する方法
実務では指定した日時よりも、現在日時から日にちを取得するケースのほうが多くあります。現在日時はLocalDateTime.now()で取得できます。そこからgetDayOfMonthを呼び出すことで、今日の日にちを取得できます。
import java.time.LocalDateTime;
public class TodaySample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
int day = now.getDayOfMonth();
System.out.println("今日の日にち:" + day);
}
}
ログインボーナス機能や月初処理、月末処理、キャンペーン期間判定などでも、このような書き方がよく利用されます。
月次処理との相性が良い
getDayOfMonthは月単位の業務処理との相性が非常に良いメソッドです。例えば毎月1日に実行する処理、毎月15日に実行する処理、毎月25日に実行する処理などを簡単に作成できます。
import java.time.LocalDateTime;
public class MonthlyJobSample {
public static void main(String[] args) {
int day = LocalDateTime.now().getDayOfMonth();
if (day == 25) {
System.out.println("請求処理を実行します");
}
}
}
請求処理を実行します
このような処理は企業システムや社内システムで非常によく利用されます。Javaエンジニアとして業務システムを開発する際には、日付取得の基本として覚えておくと役立ちます。
getDayOfYearやgetDayOfWeekとの違い
LocalDateTimeには似た名前のメソッドが複数存在します。そのため違いを理解しておくことも重要です。
getDayOfMonthは月の何日目なのかを取得します。例えば12月31日なら31を返します。getDayOfYearは1年の何日目なのかを取得します。12月31日なら365や366が返ります。getDayOfWeekは曜日を取得します。MONDAYやFRIDAYなどの曜日情報が取得できます。
メソッド名が似ているため混同しやすいですが、実務では目的に応じて使い分けることが大切です。月単位の処理ならgetDayOfMonth、年間集計ならgetDayOfYear、曜日判定ならgetDayOfWeekを利用します。
実務でよくある活用例
実際のシステム開発では、getDayOfMonthを利用する場面が数多くあります。例えば勤怠管理システムでは締め日判定、予約システムでは予約可能日判定、ECサイトではセール開催日の判定、ポイントシステムではポイント付与日の判定などがあります。
また、月末チェックを行う場合にも活用できます。現在の日にちを取得し、その月の最終日と比較することで月末処理を実装できます。会計システムや販売管理システムなどでは特に重要な処理になります。
import java.time.LocalDateTime;
public class DayCheckSample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
int day = now.getDayOfMonth();
if (day == 1) {
System.out.println("月初処理");
}
if (day == 31) {
System.out.println("月末候補日");
}
}
}
このように日にちを取得するだけでも、さまざまな業務ロジックを実現できます。
利用時の注意点
getDayOfMonthは日にちだけを返します。そのため、取得した値が31だからといって、すべての月に31日が存在するわけではありません。2月は28日または29日、4月や6月は30日までしかありません。日付処理を実装する際には、月ごとの日数の違いを意識することが重要です。
また、月末判定を単純に31日で判定すると不具合の原因になる場合があります。実務ではYearMonthクラスなどを組み合わせて、その月の最終日を取得する方法もよく利用されます。
Javaの日付処理は初心者が苦手意識を持ちやすい分野ですが、LocalDateTimeやgetDayOfMonthのような基本メソッドから理解していけば難しくありません。まずは現在日時から日にちを取得する練習を行い、その後に月初処理や月末処理、予約管理や売上管理などの実践的なサンプルへ発展させることで理解が深まります。
今回学習したgetDayOfMonthは、Javaの日時処理において非常によく利用される基本メソッドです。Java初心者の方はもちろん、Spring Bootを利用したWebアプリケーション開発や業務システム開発を行う方にとっても重要な知識となります。日付取得、日時処理、カレンダー機能、月次処理、スケジュール管理など幅広い場面で活用できるため、ぜひ使い方をしっかり覚えておきましょう。
生徒
LocalDateTimeのgetDayOfMonthを使うと、日時の中から日にちだけを取得できることが分かりました。
先生
その通りです。Javaの日付処理では非常によく使うメソッドなので、まずは基本として覚えておきましょう。
生徒
現在の日にちを取得したり、指定した日時の日にちを取得したりできるので便利ですね。
先生
はい。勤怠管理システムや予約システム、販売管理システムなどでも利用されることが多いです。
生徒
毎月1日や25日に実行する処理も簡単に作れることが理解できました。
先生
月次処理や定期処理では非常に役立ちます。実務でもよく登場する考え方です。
生徒
getDayOfYearやgetDayOfWeekとの違いも理解できました。似ている名前ですが用途が違うのですね。
先生
その理解で大丈夫です。月の日にちならgetDayOfMonth、年の何日目かならgetDayOfYear、曜日ならgetDayOfWeekを使います。
生徒
Javaの日付処理は難しいと思っていましたが、まずは必要な情報を取得するメソッドから覚えていけば理解しやすそうです。
先生
とても良い考え方です。LocalDateTimeとgetDayOfMonthは実務でも頻繁に利用されるので、ぜひ実際にコードを書いて慣れていきましょう。