Javaの特定の日付を指定してオブジェクトを作成する方法!初心者でもすぐに使えるLocalDateの基本
生徒
「Javaで特定の日付を指定して使いたいんですけど、どうやって日付オブジェクトを作ればいいですか?」
先生
「JavaではLocalDateというクラスを使えば、年・月・日を指定して簡単に日付オブジェクトを作ることができますよ。」
生徒
「数字で指定するだけですか?それとも何か特別な書き方があるんですか?」
先生
「ofメソッドを使えば、簡単に '年・月・日' を指定して日付を生成できます。それでは詳しく見ていきましょう。」
1. Javaで特定の日付を生成するには?LocalDateクラスの基本
Javaで特定の日付(たとえば「2025年12月25日」など)をプログラム内で扱いたい場合は、java.time.LocalDateクラスを使うのが一般的です。
LocalDateは、年・月・日のみを扱う日付クラスで、Java 8から導入されました。
時刻やタイムゾーンが不要なケースでは、LocalDateが最適です。
2. LocalDate.ofメソッドで日付オブジェクトを作成する
最もシンプルな方法は、LocalDate.of(int year, int month, int dayOfMonth)メソッドを使う方法です。
年・月・日を整数で渡すだけで、簡単に日付を表すインスタンスを生成できます。
import java.time.LocalDate;
public class CreateDateExample {
public static void main(String[] args) {
LocalDate birthday = LocalDate.of(1990, 7, 15);
System.out.println("誕生日: " + birthday);
}
}
誕生日: 1990-07-15
3. LocalDate.parseで文字列から日付を生成する
文字列から日付を生成する場合は、LocalDate.parseメソッドを使います。
文字列の形式は"yyyy-MM-dd"形式が基本です。
例えば、外部から受け取った日付文字列をLocalDateに変換したい場合に便利です。
import java.time.LocalDate;
public class ParseDateExample {
public static void main(String[] args) {
String input = "2023-11-03";
LocalDate date = LocalDate.parse(input);
System.out.println("指定日: " + date);
}
}
指定日: 2023-11-03
4. DateTimeFormatterで独自のフォーマットを扱う方法
文字列が"yyyy/MM/dd"や"dd-MM-yyyy"のような形式の場合は、DateTimeFormatterを使って変換する必要があります。
書式に合わせたフォーマッタを定義し、それをLocalDate.parseに渡します。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class CustomFormatExample {
public static void main(String[] args) {
String input = "2025/09/03";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate date = LocalDate.parse(input, formatter);
System.out.println("フォーマット指定日: " + date);
}
}
フォーマット指定日: 2025-09-03
5. 月や日が1桁のときの注意点
月や日が1桁(例:2025年1月5日)の場合も、LocalDate.ofであればそのまま数値で渡せます。
しかし、文字列で扱う場合は、ゼロパディングされた形式(例:"2025-01-05")でなければ例外が発生することがあります。
そのため、文字列から日付を生成する場合は、事前に文字列の形式が正しいか確認するのが大切です。
6. 日付生成で発生するエラー例と対処法
LocalDate.ofで存在しない日付(例:2月30日)を指定すると、DateTimeExceptionが発生します。
また、parseメソッドでも、日付のフォーマットが不正だとDateTimeParseExceptionが出ます。
これらのエラーに備えて、日付の妥当性チェックや、例外処理を加えることをおすすめします。
import java.time.LocalDate;
import java.time.format.DateTimeParseException;
public class SafeParseExample {
public static void main(String[] args) {
String input = "2025-02-30";
try {
LocalDate date = LocalDate.parse(input);
System.out.println("日付: " + date);
} catch (DateTimeParseException e) {
System.out.println("不正な日付形式です: " + e.getMessage());
}
}
}
不正な日付形式です: Text '2025-02-30' could not be parsed: Invalid date 'FEBRUARY 30'
7. Javaで日付を指定して使う実用例
Javaで日付オブジェクトを生成して使う場面は多くあります。たとえば以下のようなケースです:
- 予約日や締切日をコード上に明記して処理を行う
- 入力フォームから送られた日付文字列をJavaで扱う
- データベースに保存する日付の整形や比較処理
JavaではLocalDateのofやparseを使えば、柔軟に日付生成ができるので、初心者でも安心して利用できます。