JavaのLocalDateTime.getメソッドを完全ガイド!初心者でもわかる日時の取り出し方
生徒
「先生、Javaで日付や時間の特定の値を取り出したいときってどうすればいいんですか?」
先生
「そのときに使えるのがLocalDateTimeクラスのgetメソッドだよ。例えば年や月や日などを指定して取得できるんだ。」
生徒
「なるほど!でもどうやってどの値を取り出すか指定するんですか?」
先生
「ChronoFieldを使えば簡単に指定できるんだよ。実際のコードを見ながら説明していこう。」
1. java.timeパッケージについて
java.timeパッケージはJava8から導入された新しい日付と時刻APIで、古いDateやCalendarよりも直感的に使えるのが特徴です。金融システムや予約管理システムなど、正確な時間管理が必要なアプリケーションでは必須の技術になっています。初心者もまずはこのパッケージを理解することから始めると良いでしょう。
2. LocalDateTimeクラスの概要
LocalDateTimeは日付と時間を保持するクラスで、タイムゾーン情報は持ちません。「2025年9月23日 14時45分」といったローカルな日時を表現できます。アプリケーションで画面表示やデータベース保存に使う場面がとても多く、基本的なクラスとして覚えておく必要があります。
3. getメソッドの基本
getメソッドは、LocalDateTimeから特定のフィールドの値を取り出すために使います。指定にはChronoField列挙型を用います。例えばChronoField.YEARを指定すると年を取得でき、ChronoField.MONTH_OF_YEARを指定すると月を取得できます。
import java.time.LocalDateTime;
import java.time.temporal.ChronoField;
public class GetExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
int year = now.get(ChronoField.YEAR);
int month = now.get(ChronoField.MONTH_OF_YEAR);
int day = now.get(ChronoField.DAY_OF_MONTH);
System.out.println("年: " + year);
System.out.println("月: " + month);
System.out.println("日: " + day);
}
}
年: 2025
月: 9
日: 23
4. ChronoFieldの種類
ChronoFieldにはさまざまな定数があり、年・月・日・時・分・秒などを指定できます。代表的なものとしてはYEAR(年)、MONTH_OF_YEAR(月)、DAY_OF_MONTH(日)、HOUR_OF_DAY(時間)、MINUTE_OF_HOUR(分)、SECOND_OF_MINUTE(秒)などがあります。これらを覚えておくと柔軟に日時データを扱うことができます。
5. 時間の取得例
次に時間を取り出す例を見てみましょう。ChronoField.HOUR_OF_DAYで「時」を、ChronoField.MINUTE_OF_HOURで「分」を、ChronoField.SECOND_OF_MINUTEで「秒」を取得することが可能です。
import java.time.LocalDateTime;
import java.time.temporal.ChronoField;
public class TimeExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
int hour = now.get(ChronoField.HOUR_OF_DAY);
int minute = now.get(ChronoField.MINUTE_OF_HOUR);
int second = now.get(ChronoField.SECOND_OF_MINUTE);
System.out.println("時: " + hour);
System.out.println("分: " + minute);
System.out.println("秒: " + second);
}
}
時: 14
分: 45
秒: 30
6. getメソッド利用時の注意点
getメソッドで指定したフィールドがLocalDateTimeに存在しない場合、UnsupportedTemporalTypeExceptionが発生します。例えば週番号などを直接取得しようとするとエラーになるので注意が必要です。必要に応じてgetLongメソッドを使うとより広い範囲の値に対応できます。
7. getメソッドと他の取得方法の違い
getを使わなくてもgetYear()やgetMonthValue()のような専用メソッドを使うこともできます。専用メソッドは可読性が高く初心者におすすめですが、getは柔軟性が高く、フィールドを動的に扱いたい場合に便利です。
8. 実際の活用場面
業務アプリケーションでは、システムのログに日時を記録する際や、ユーザーに日付を表示するときに年・月・日を個別に取り出すことがあります。例えば予約システムでは「開始年」「開始月」「開始日」をそれぞれフォームに入力させるために、LocalDateTime.getを利用して分解するのが一般的です。