JavaのLocalDateTime.ofメソッド完全ガイド!初心者でもわかる日時指定の方法
生徒
「先生、Javaで自分が指定した日時を作ることはできますか?」
先生
「もちろんできますよ。java.timeパッケージのLocalDateTimeクラスにはofメソッドが用意されていて、年や月や日、時間を自由に指定して日時を作ることができます。」
生徒
「へえ、便利そうですね!誕生日やイベントの日付もプログラムで扱えるんですね。」
先生
「その通りです。では、基本から一緒に見ていきましょう。」
1. java.timeパッケージの役割
java.timeパッケージはJava8以降で導入された日付と時間を扱う新しいAPIです。従来のDateやCalendarよりも使いやすく直感的に設計されていて、初心者にも理解しやすいのが特徴です。
このパッケージの中には日付だけを扱うLocalDate、時間だけを扱うLocalTime、日付と時間を両方まとめて扱うLocalDateTimeなどがあります。今回はこのLocalDateTimeクラスに注目します。
2. LocalDateTimeクラスとは
LocalDateTimeは、年月日と時分秒をまとめて扱うことができるクラスです。たとえば「2025年1月1日10時30分」という具体的な日時を作ったり、現在日時を取得して処理に利用することができます。
ログの記録や予約システム、ファイルのタイムスタンプなど、あらゆるプログラムでよく使われる重要なクラスです。
3. ofメソッドの概要
ofメソッドは、LocalDateTimeのインスタンスを指定した日時で生成するための静的メソッドです。現在時刻ではなく、自分で指定した日時をプログラム上で使いたいときに利用します。
年、月、日、時間、分、秒といった情報を順番に渡すだけで簡単に日時を作れるのが特徴です。
4. ofメソッドの基本的な使い方
実際に、ofメソッドを使って日時を生成する例を見てみましょう。
import java.time.LocalDateTime;
public class OfExample {
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.of(2025, 9, 23, 15, 45, 30);
System.out.println("指定した日時: " + dateTime);
}
}
指定した日時: 2025-09-23T15:45:30
このように、年月日と時分秒を渡すだけで指定の日時を作ることができます。
5. 引数の詳細
LocalDateTime.ofには複数のオーバーロードが存在します。主に以下の2種類です。
of(int year, int month, int dayOfMonth, int hour, int minute)of(int year, int month, int dayOfMonth, int hour, int minute, int second)
月は1から12で指定し、日付はその月の日数に合わせます。例えば2月は28日または29日、4月は30日です。もし存在しない日付を指定するとDateTimeExceptionが発生するため注意が必要です。
6. 便利な活用例
実際の開発では以下のような場面でofメソッドを活用します。
- ユーザーが入力した日付と時間をもとに予約日時を作成する
- 毎年決まった記念日の日時を表現する
- 特定のイベント開始日時をプログラムに埋め込む
- スケジュール管理アプリで日付オブジェクトを作成する
7. DateTimeFormatterとの組み合わせ
ofで作った日時を見やすい形式で表示したい場合、DateTimeFormatterを組み合わせます。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class OfFormatExample {
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.of(2025, 12, 31, 23, 59, 59);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒");
String formatted = dateTime.format(formatter);
System.out.println("フォーマット後: " + formatted);
}
}
フォーマット後: 2025年12月31日 23時59分59秒
8. ofメソッドと他のクラスとの違い
LocalDateTime.ofは日付と時刻を同時に指定しますが、もし日付だけを指定したいならLocalDate.of、時刻だけを指定したいならLocalTime.ofを利用できます。
さらにタイムゾーンを考慮する場合はZonedDateTime.ofを使うと、地域ごとの正しい日時を生成できます。
9. 応用練習アイデア
理解を深めるために、以下のような練習問題に挑戦してみると良いでしょう。
- 自分の誕生日の日時をプログラムで作成して表示する
- 来週の同じ曜日の午前9時を計算して表示する
- イベント開始日時と終了日時を作成して、差分を計算する
- 毎月1日の午前0時を生成してリストに保存する