Javaの現在の日付と時刻を取得する方法を完全解説!初心者向けLocalDate・LocalTime・LocalDateTime入門
生徒
「Javaで今の日時ってどうやって取得するんですか?アプリにログインした時間とかを記録したくて…」
先生
「Javaには日付や時刻を簡単に取得できるLocalDateやLocalTime、LocalDateTimeという便利なクラスがありますよ。」
生徒
「どれを使えばいいんですか?違いもよくわからなくて…」
先生
「それぞれの違いと使い方をわかりやすく説明しましょう!」
1. Javaで現在の日付を取得する:LocalDateの基本
Javaで現在の日付を取得する方法としてまず覚えておきたいのがLocalDateクラスです。
LocalDateは「年月日」の情報だけを扱うクラスで、時間情報は含みません。日付表示や記録など、時刻を必要としない場面で使います。
たとえば、今日の日付を取得したいときには次のように書きます。
import java.time.LocalDate;
public class DateExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
System.out.println("今日の日付: " + today);
}
}
今日の日付: 2025-09-03
LocalDate.now()で現在の日付を取得できます。結果は「2025-09-03」のようなISO形式(年-月-日)で出力されます。
2. Javaで現在の時刻を取得する:LocalTimeの使い方
次に、現在の「時刻」だけを取得したい場合はLocalTimeを使います。
LocalTimeは時・分・秒などの時間情報だけを管理し、日付の情報は含まれません。
例えば、今の時刻を知りたいときには以下のように記述します。
import java.time.LocalTime;
public class TimeExample {
public static void main(String[] args) {
LocalTime now = LocalTime.now();
System.out.println("現在の時刻: " + now);
}
}
現在の時刻: 14:35:12.345678
上の例では、現在の時刻が「時:分:秒.ナノ秒」で表示されます。
秒以下の表示を省略したい場合はDateTimeFormatterを使ってフォーマットすることも可能です。
3. Javaで日付と時刻の両方を取得する:LocalDateTimeの活用
日付と時刻の両方を一緒に取得したいときはLocalDateTimeを使いましょう。
このクラスは「年・月・日・時・分・秒」をすべて含むデータを扱えます。
以下は、現在の日時をまとめて取得するコード例です。
import java.time.LocalDateTime;
public class DateTimeExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
System.out.println("現在の日時: " + now);
}
}
現在の日時: 2025-09-03T14:35:12.345678
「T」は日付と時刻の区切り文字で、ISO-8601形式での表示が標準となっています。
アプリのログ記録やデータベース保存など、日付と時刻をまとめて使いたいときに非常に便利です。
4. LocalDateTimeを任意の形式にフォーマットする方法
LocalDateTimeのままだと見た目が少し扱いにくい場合があります。
そんなときはDateTimeFormatterを使って「yyyy/MM/dd HH:mm:ss」のような形式に変換できます。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class FormatExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String formatted = now.format(formatter);
System.out.println("フォーマット後の日時: " + formatted);
}
}
フォーマット後の日時: 2025/09/03 14:35:12
フォーマットを使うと、ユーザー向けに見やすい形式に変換できます。
他にも「yyyy年MM月dd日 HH時mm分ss秒」など、用途に応じて自由に変更できます。
5. LocalDateやLocalTimeのよくある用途と注意点
日付と時刻の扱いは、システムによってはタイムゾーンを意識する必要があります。
ただし、LocalDateやLocalTime、LocalDateTimeはタイムゾーン情報を持たない「ローカル」な日時を扱うため、サーバや端末の時間設定に依存します。
以下のようなケースで使うと便利です。
- ログイン時刻の記録:
LocalDateTime - 誕生日や記念日の管理:
LocalDate - アラームやスケジュール機能の設定:
LocalTime
一方で、タイムゾーンを明確に管理したい場合はZonedDateTimeを使うのが適しています。
6. Javaの日付・時刻取得に関するよくある質問
Javaで日付や時刻を扱うときによくある疑問をいくつか紹介します。
- Q. LocalDateTimeとDateの違いは?
→ Java 8以前ではDateやCalendarを使っていましたが、LocalDateTimeはそれを改良したものです。使いやすく、スレッドセーフになっています。 - Q. 未来の日付や過去の日付はどうやって扱う?
→plusDays()やminusDays()などのメソッドで簡単に加減できます。
LocalDate tomorrow = LocalDate.now().plusDays(1);
LocalDate yesterday = LocalDate.now().minusDays(1);
このように、現在を基準にした日付操作も直感的に行えます。
まとめ
Javaの日付と時刻取得を総合的に理解し、実務に応用できる形で整理しよう
Javaで現在の日付や時刻を取得する方法として紹介したLocalDate、LocalTime、LocalDateTimeは、日常的なアプリケーション開発の中で非常に重要な役割を持つ基本クラスです。とくに、画面表示、ログ記録、イベント管理、通知システムなど、ほとんどの機能が日付や時刻の管理と結びついているため、これらのクラスを正しく理解して使い分ける力は、Javaプログラマにとって欠かせない基礎知識と言えます。
まず、日付だけを扱うLocalDateは、誕生日や記念日のように時刻を必要としない情報管理に向いており、「今日の日付を取得する」という基本処理を非常にシンプルに記述できます。次に、時刻だけを扱うLocalTimeは、アラーム機能や勤務時間管理など、分単位・秒単位での時間計測に適しています。そして、日付と時刻の両方を同時に扱えるLocalDateTimeは、ログイン記録、取引情報、予約管理など、実務で特に頻繁に使われるクラスであり、現在日時を「一まとまりの情報」として扱える点が大きなメリットです。
さらに、日付と時刻の両方をユーザーに見やすい形式へ変換するためには、DateTimeFormatterを併用する必要があります。ISO形式のままでは読みづらい場面も多いため、「yyyy/MM/dd HH:mm:ss」や「yyyy年MM月dd日 HH時mm分ss秒」などのように用途に応じてフォーマットを設定することで、視覚的にも自然な形へ整形できます。たとえば、ログファイルの記録では秒やミリ秒まで含めた書式を用いることが一般的で、ユーザー向け画面では日本語表記を利用するとわかりやすくなります。フォーマット指定の際には、「MM(=月)」と「mm(=分)」のように似た表記でも全く異なる意味を持つため、注意深く扱う必要があります。
また、未来や過去の日付操作も簡単で、plusDays()やminusDays()のようなメソッドを利用することで、明日・昨日といった日付計算が直感的に行えます。これはアプリケーションの有効期限チェック、スケジュール計算、リマインダー処理など実務で多用される機能の基礎になります。日付と時刻を管理する際はタイムゾーンの概念も考慮する必要がある場面がありますが、ローカルな日時を扱う範囲ではLocalDate系が最も使いやすい選択肢となります。
以下に、これまで学んだ内容をまとめたサンプルコードを掲載し、実務で日付・時刻を管理する際に役立つ書き方を再確認できるよう整理しています。これらのサンプルを参考にしながら、用途ごとに必要なクラスとメソッドを正しく使い分ける練習をすると、アプリ開発での日付操作がよりスムーズになるでしょう。
総合サンプルコード:日付・時刻の取得とフォーマットをまとめて確認
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class SummaryDateTimeExample {
public static void main(String[] args) {
// 今日の日付を取得
LocalDate today = LocalDate.now();
System.out.println("今日の日付: " + today);
// 現在の時刻を取得
LocalTime nowTime = LocalTime.now();
System.out.println("現在の時刻: " + nowTime);
// 現在の日時を取得
LocalDateTime nowDateTime = LocalDateTime.now();
System.out.println("現在の日時: " + nowDateTime);
// 任意の形式にフォーマット
DateTimeFormatter formatter =
DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String formatted = nowDateTime.format(formatter);
System.out.println("フォーマット後の日時: " + formatted);
// 日付の加算と減算
LocalDate tomorrow = today.plusDays(1);
LocalDate yesterday = today.minusDays(1);
System.out.println("明日の日付: " + tomorrow);
System.out.println("昨日の日付: " + yesterday);
}
}
このサンプルでは、「現在の日付」「現在の時刻」「現在の日時」をまとめて取得し、さらにフォーマット変換、未来・過去の日付操作まで一連の流れで確認できます。実務の様々な場面で応用できる基本的な操作が詰め込まれているため、基礎をしっかり身につけたい初心者にとって非常に役立つ構成となっています。
生徒
「LocalDateとLocalTimeとLocalDateTimeの役割がようやく理解できました!最初は違いがよくわからなかったんですが、使える場面が全然違うんですね。」
先生
「そうなんです。それぞれ得意な用途があるので、実際の開発で何を扱いたいかによって適切なクラスを選ぶことが大切ですよ。」
生徒
「フォーマットの設定もいろいろ工夫できるんですね。見やすい日時表示ってアプリの印象にも関わるから重要なんだなと思いました。」
先生
「その通りです。特に日本語表記のフォーマットはユーザー向け画面でよく使われるので覚えておくと便利ですよ。」
生徒
「明日や昨日の日付を簡単に扱えるのも驚きました。業務システムでもよく使えそうです!」
先生
「日付操作はどのシステムでも頻繁に登場しますので、今日の学びをしっかり活かしていきましょう。」