JavaのLocalDateTime.parseメソッドを徹底解説!初心者でもわかる文字列から日時変換
生徒
「先生、Javaで文字列から日時を作る方法はありますか?」
先生
「はい、Javaのjava.timeパッケージにあるLocalDateTimeクラスのparseメソッドを使えば、簡単に文字列から日時に変換できますよ。」
生徒
「parseってどういう仕組みなんですか?」
先生
「文字列の書式に合わせて日時オブジェクトを作成する仕組みです。例えば「2025-09-23T10:15:30」という文字列を渡すと、その日時を表すLocalDateTimeが生成されます。」
生徒
「便利ですね!実際の使い方を見てみたいです。」
1. java.timeパッケージについて
java.timeパッケージは、Java8から導入された新しい日時APIで、従来のDateやCalendarよりも直感的に使えます。特にLocalDateTimeは日付と時刻を同時に表現できるため、ログやスケジュール処理に広く利用されています。
2. LocalDateTimeクラスの役割
LocalDateTimeは日付と時刻を扱うクラスですが、タイムゾーン情報は含みません。システムの標準時間や指定のタイムゾーンを後から組み合わせて利用します。例えばデータベースの文字列日時を解析してJavaで処理するときに使うのが一般的です。
3. parseメソッドとは
parseメソッドは文字列をLocalDateTimeに変換するための静的メソッドです。ISO形式(例:2025-09-23T12:30:00)のような標準フォーマットをサポートしており、さらにDateTimeFormatterを指定して任意の書式にも対応できます。
4. 基本的な使い方
まずはISO形式の文字列を変換する簡単な例を見てみましょう。
import java.time.LocalDateTime;
public class ParseExample {
public static void main(String[] args) {
String text = "2025-09-23T12:30:45";
LocalDateTime dateTime = LocalDateTime.parse(text);
System.out.println("変換結果: " + dateTime);
}
}
変換結果: 2025-09-23T12:30:45
5. DateTimeFormatterを使った例
標準形式以外の文字列を解析する場合はDateTimeFormatterを使います。例えば「2025/09/23 12:30:45」という書式に対応させることができます。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class CustomParseExample {
public static void main(String[] args) {
String text = "2025/09/23 12:30:45";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(text, formatter);
System.out.println("フォーマット変換結果: " + dateTime);
}
}
フォーマット変換結果: 2025-09-23T12:30:45
6. parseを使うメリット
- 文字列を直接日時に変換できるのでコードが簡潔になる
- フォーマットを柔軟に指定できるので多様な文字列に対応可能
- エラー時には例外が投げられるため入力チェックとしても活用できる
7. エラー処理について
parseメソッドで解析できない文字列を渡すとDateTimeParseExceptionが発生します。必ずtry-catchでエラー処理を行い、安全に実行できるようにしましょう。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class ErrorHandlingExample {
public static void main(String[] args) {
String text = "invalid-date";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
try {
LocalDateTime dateTime = LocalDateTime.parse(text, formatter);
System.out.println(dateTime);
} catch (DateTimeParseException e) {
System.out.println("解析エラー: " + e.getMessage());
}
}
}
解析エラー: Text 'invalid-date' could not be parsed at index 0
8. 実務での活用例
parseは以下のような場面で役立ちます。
- ユーザー入力の日時文字列を解析して処理する
- CSVやJSONに含まれる日時データを変換してデータベースに保存する
- 外部APIから受け取った文字列を日時に変換して計算に利用する
- ログファイルに書かれた時刻を解析してシステム分析に活用する
9. nowやofとの違い
parseは文字列から日時を生成するのに対し、nowはシステム時刻をそのまま取得します。またofは年や月日を直接指定して作成します。状況に応じてメソッドを使い分けるのがポイントです。
10. 練習課題
最後に理解を深めるための課題に挑戦してみましょう。
- 「2025-12-25T18:00:00」という文字列を
parseで変換し、日時を出力する - 「2025年09月23日 12時30分45秒」という日本語形式の文字列を
DateTimeFormatterとparseで解析する - 誤ったフォーマットの文字列を入力してエラー処理を試してみる