Javaの日付をフォーマットして表示する方法!初心者向けDateTimeFormatterの使い方ガイド
生徒
「Javaで今日の日付を表示したいんですが、2025/09/03 みたいに書式を変える方法ってありますか?」
先生
「JavaではDateTimeFormatterを使えば、日付を好きなフォーマットで表示できますよ。」
生徒
「フォーマットって自由に指定できるんですか?たとえば「2025年9月3日」とかも?」
先生
「もちろん可能です!それでは、DateTimeFormatterの基本から応用まで見ていきましょう。」
1. DateTimeFormatterとは?Javaで日付表示を整えるクラス
Javaで日付や時刻を「見やすく」「自由に」表示したいときに使うのがDateTimeFormatterクラスです。
通常、LocalDateやLocalDateTimeで取得した日時はISO形式(例:2025-09-03)で出力されますが、それを「yyyy/MM/dd」や「yyyy年MM月dd日 HH:mm:ss」など任意の書式に変換できます。
このDateTimeFormatterはJava 8以降で導入されたjava.timeパッケージに含まれており、従来のSimpleDateFormatよりも安全で簡単に使えるようになっています。
2. yyyy/MM/dd形式で日付を表示する基本例
最もよく使われるのが「yyyy/MM/dd」形式です。これは年月日をスラッシュで区切る日本の一般的な表記です。
以下の例では、LocalDateとDateTimeFormatterを使って今日の日付を希望の形式で表示しています。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class FormatDateExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String formatted = today.format(formatter);
System.out.println("今日の日付: " + formatted);
}
}
今日の日付: 2025/09/03
ofPattern("yyyy/MM/dd")の部分で好きなパターンを指定できます。
「yyyy」は西暦4桁、「MM」は月2桁、「dd」は日2桁を表します。
3. 日本語フォーマットで表示「yyyy年MM月dd日」形式
日本語で日付を表示したいときは、年月日の間に「年」「月」「日」を入れることで、自然な表記にできます。
例えば、「2025年09月03日」のような表現が可能です。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class JapaneseFormatExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String result = today.format(formatter);
System.out.println("日本語表記: " + result);
}
}
日本語表記: 2025年09月03日
「年」「月」「日」はそのまま文字列として出力されるため、視覚的にも読みやすくなります。
ユーザー向けの画面表示や帳票出力などでよく使われる形式です。
4. 時刻を含めたフォーマットの表示(yyyy/MM/dd HH:mm:ss)
日付だけでなく、時刻も一緒に表示したいときにはLocalDateTimeを使います。
「yyyy/MM/dd HH:mm:ss」という形式は、ログの出力や記録に使われることが多く、標準的な日時の表記方法です。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateTimeFormatExample {
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:55:27
「HH」は24時間制の時、「mm」は分、「ss」は秒を表しています。
必要に応じて「秒」まで表示するかは調整可能です。
5. 時刻のフォーマットだけを変更したい場合(HH:mm形式など)
時刻だけを取り出してフォーマットしたい場合はLocalTimeを使いましょう。
例えば、「14:55」のような形式で現在時刻を表示するには以下のように書きます。
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class TimeFormatExample {
public static void main(String[] args) {
LocalTime now = LocalTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
String formattedTime = now.format(formatter);
System.out.println("現在の時刻: " + formattedTime);
}
}
現在の時刻: 14:55
「時と分」だけでシンプルに表示できるので、アラーム機能や予定通知などに最適です。
6. よく使われるフォーマットパターン一覧
JavaのDateTimeFormatterで使用できる主な書式は以下の通りです。
- yyyy:西暦(例:2025)
- MM:月(01〜12)
- dd:日(01〜31)
- HH:時(00〜23)※24時間制
- mm:分(00〜59)
- ss:秒(00〜59)
パターンを組み合わせれば、自由なフォーマットで日付時刻を表示できます。
7. フォーマットでエラーになるケースと注意点
DateTimeFormatterを使う際に注意したいのは、指定したパターンとフォーマット対象の型が一致しているかどうかです。
例えば、LocalDateには時間情報が含まれていないため、"HH:mm:ss"を指定するとUnsupportedTemporalTypeExceptionが発生します。
また、「mm(分)」と「MM(月)」を間違えるケースも非常に多いので注意しましょう。
「mm」は分、「MM」は月です。間違えて使うと意図しない表示になります。
まとめ
Javaの日付フォーマット操作を総合的に振り返ろう
Javaで日付や時刻を思いどおりの書式に整えるためには、DateTimeFormatterを正しく使いこなすことが大切です。今回の記事では、「yyyy/MM/dd」「yyyy年MM月dd日」「yyyy/MM/dd HH:mm:ss」など、実務でも頻繁に利用される日付書式を中心に、LocalDate、LocalDateTime、LocalTimeなどの各クラスと組み合わせながら柔軟にフォーマットを変更する方法を学びました。日付表記は画面表示、帳票出力、ログ管理、スケジュール機能など多くの場面で必要となるため、DateTimeFormatterの理解はJavaの基本操作の中でも重要な技術となります。
また、フォーマット指定では大文字と小文字の違いが特に重要で、「MM」は「月」、「mm」は「分」を意味するなど、使い分けを誤ると意図しない結果になりやすい点も確認しました。これらは初心者がつまずきやすいポイントでもあり、正しい知識を身につけておくことで日付処理に対する理解が大きく深まります。さらに、時刻のみを扱うLocalTimeの活用や、日時情報を扱うLocalDateTimeの書式設定など、多様なニーズに応じて柔軟に使い分けができる点も重要な学びの一つです。
また、よくあるエラーとして、対応していない型に不適切なフォーマットを指定するとUnsupportedTemporalTypeExceptionが発生する問題も紹介しました。例えば、LocalDateに対して時刻「HH:mm:ss」を指定すると例外が発生するため、日付・時刻のクラスの違いを理解し、適切なフォーマット指定を行う必要があります。Javaの日時APIは柔軟で強力であり、安全に扱えるように設計されていますが、その分ルールも明確なので、正しく活用することで実装の品質が大きく向上します。
最後に、記事全体の理解をより深めるために、日付と時刻を組み合わせたサンプルプログラムを示します。実務でのフォーマット変換を意識しつつ、コードを参考にしながら自身のプロジェクトへ応用できるように学びを定着させておきましょう。
日付と時刻をまとめてフォーマットするサンプルコード
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class SummaryDateFormatExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter fullFormatter =
DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒");
String result = now.format(fullFormatter);
System.out.println("現在日時の詳細フォーマット: " + result);
// 異なるフォーマットを複数適用する例
DateTimeFormatter simpleFormatter =
DateTimeFormatter.ofPattern("yyyy/MM/dd");
System.out.println("日付のみ: " + now.toLocalDate().format(simpleFormatter));
}
}
このサンプルは、記事で学んだ複数のポイントをまとめて確認できる内容になっています。「yyyy年MM月dd日 HH時mm分ss秒」という細かい日本語フォーマットのほか、「yyyy/MM/dd」といったシンプルな書式も併用しており、実務のさまざまなケースに対応できる柔軟なフォーマット処理の考え方が身につく構成となっています。
生徒
「DateTimeFormatterって、こんなに自由な書式で日付を表示できるんですね!最初は難しいと思ってました。」
先生
「使い方に慣れるととても便利ですよ。特に月と分の違い、MMとmmは間違えやすいので注意が必要ですね。」
生徒
「たしかに、LocalDateとLocalDateTimeの違いも意識しないとエラーになりやすいってわかりました。」
先生
「そのとおりです。扱う対象に合わせたフォーマットを選ぶのがポイントです。実務でも頻繁に使う場面が多いので、今のうちにしっかり身につけておきましょう。」
生徒
「今日学んだことを活かして、自分のプログラムでもいろいろな日付表示に挑戦してみます!」