JavaのDateTimeFormatterの使い方を完全ガイド!初心者でもわかる日付フォーマットの基本
生徒
「Javaで日付や時間を見やすい形で表示したいんですが、どうすればいいですか?」
先生
「それならDateTimeFormatterクラスを使うと便利ですよ。Javaの標準ライブラリで提供されているクラスです。」
生徒
「DateTimeFormatterって、どんなふうに使うんですか?」
先生
「それでは、DateTimeFormatterの使い方やカスタム書式などを詳しく見ていきましょう!」
1. java.time.formatパッケージとは
Javaで日付や時間を操作するためのクラスは、java.timeパッケージに集約されています。その中でも、java.time.formatパッケージは、日付や時刻をフォーマットしたり、文字列から解析(パース)するためのクラスを提供しています。
このパッケージの中でも特に重要なのがDateTimeFormatterクラスです。これは、日付と時刻を任意の形式で文字列に変換したり、逆に文字列から日付・時刻を生成するための便利なクラスです。
2. DateTimeFormatterクラスの基本的な使い方
Javaでは、LocalDateやLocalDateTimeといった日時オブジェクトを使って日付や時間を扱います。それらを「見やすい形」に変換したい場合にDateTimeFormatterを使います。
例えば、現在の日付を「2025/09/04」のように表示したい場合は以下のように書きます。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateFormatExample {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String formatted = date.format(formatter);
System.out.println(formatted);
}
}
2025/09/04
ofPattern()メソッドを使うことで、任意のフォーマット(パターン)を指定できます。
3. DateTimeFormatterでよく使う書式パターン
DateTimeFormatterで使える書式の代表的なものをまとめると以下の通りです。
yyyy:4桁の西暦(例:2025)MM:2桁の月(例:09)dd:2桁の日(例:04)HH:24時間表記の時(例:15)mm:分(例:30)ss:秒(例:45)
これらを組み合わせることで、自由な形式で日付や時間を表示できます。
4. LocalDateTimeと組み合わせたフォーマット例
LocalDateTimeを使えば、日付と時刻の両方を扱うことができます。
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 result = now.format(formatter);
System.out.println(result);
}
}
2025年09月04日 14時55分00秒
日本語を混ぜた書式も指定できるので、見やすいフォーマットが作れます。
5. 文字列から日付・時刻を解析する方法
DateTimeFormatterは、文字列から日時を解析(パース)することも可能です。これにはparse()メソッドを使用します。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class ParseDateExample {
public static void main(String[] args) {
String input = "2025/09/04";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate parsedDate = LocalDate.parse(input, formatter);
System.out.println(parsedDate);
}
}
2025-09-04
書式パターンと文字列の形式が一致していないと例外が発生するので注意が必要です。
6. DateTimeFormatterの定数も便利!
DateTimeFormatterには、あらかじめ用意された定数もあります。よく使われるフォーマットがすぐに使えるので、初心者にも便利です。
DateTimeFormatter.ISO_LOCAL_DATE(例:2025-09-04)DateTimeFormatter.ISO_DATE_TIME(例:2025-09-04T14:55:00)DateTimeFormatter.BASIC_ISO_DATE(例:20250904)
これらを使うとパターン指定が不要になるため、シンプルな処理に向いています。
7. カスタムフォーマットのよくあるエラーと注意点
カスタムフォーマットを使う際によくあるミスとしては、以下のようなものがあります。
- 月(
MM)と分(mm)を間違える - 日付に不要なスペースが入っている
- 日付と時刻の区切りを入れ忘れる
例えば「yyyy-mm-dd」とすると「mm」が分として認識されるため、月ではなく「00」と表示されてしまいます。
8. DateTimeFormatterと他のAPIの違い
Java8以前では、SimpleDateFormatが使われていましたが、スレッドセーフでないなどの問題がありました。DateTimeFormatterは、スレッドセーフで安全に使えるのが大きな利点です。
そのため、現在のJavaプログラミングではjava.time.formatパッケージのDateTimeFormatterを使うのが推奨されています。
9. WebアプリやAPIでの使いどころ
DateTimeFormatterは、Spring BootやServletなどのJava Webアプリケーションでも活用されます。ユーザーが入力した日付をサーバー側で整形したり、DBに登録する前に正しい形式で保持するために使われることが多いです。
また、REST APIで日時情報をJSON形式に変換する際も、DateTimeFormatterを使ってISO形式やカスタム形式に整形することができます。
10. Javaの日付フォーマットをマスターしよう
DateTimeFormatterは、Javaで日付と時間を扱う上でとても重要なクラスです。初心者の方でも基本的なフォーマットやパースの方法を覚えれば、アプリ開発で役立ちます。
Javaのjava.time.formatパッケージは、他にも日付と時刻のロケール対応や複雑な書式設定などが可能です。まずはDateTimeFormatterからしっかり使いこなせるようにしましょう。
まとめ
DateTimeFormatterの使い方と活用ポイントの振り返り
Javaで日付や時刻を操作するには、java.time.formatパッケージの中にあるDateTimeFormatterクラスが欠かせません。この記事では、DateTimeFormatterの基本からカスタムフォーマット、定数を使った便利なフォーマット、さらに文字列から日付をパースする方法まで、初心者にもわかりやすくJavaの日付フォーマット操作を解説しました。
特にofPattern()メソッドの活用や、LocalDate、LocalDateTimeとの組み合わせにより、日付や時間の表示形式を柔軟にカスタマイズできる点は、Javaアプリ開発において非常に実用的です。また、ISO標準のフォーマットを定数で簡単に使える利便性も押さえておきたいポイントでした。
日付フォーマットの設定は、WebアプリケーションやAPI開発での出力形式の統一に役立つだけでなく、ログ出力やファイル名の生成など幅広い場面で活躍します。フォーマット指定時の注意点としては、月(MM)と分(mm)の混同ミスやパターンとの不一致による例外などが挙げられます。
Javaでは以前SimpleDateFormatが主流でしたが、現在ではDateTimeFormatterが主流となっており、スレッドセーフであることからも、業務システムやマルチスレッド処理に対応した開発に最適です。さらに、Spring Bootなどのフレームワークでも、DateTimeFormatterを活用した日付変換の仕組みがベースとなっているため、Javaを学ぶ上で避けては通れない重要なクラスといえます。
サンプル:ログファイル名に日付を付ける応用例
実践的な例として、ログファイル名に日付を入れるコードを紹介します。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class LogFileNameExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss");
String fileName = "log_" + now.format(formatter) + ".txt";
System.out.println(fileName);
}
}
log_20250904_153025.txt
このように、日付と時刻を組み合わせてファイル名を自動生成することで、ログファイルの管理や識別がしやすくなります。アプリケーションのバッチ処理や監視システムなどでも活用できるテクニックです。
生徒
「Javaで日付を自由な形式に変換できるようになってきました!DateTimeFormatterって便利ですね。」
先生
「その通りです。DateTimeFormatterを使えば、日付や時刻を自在にフォーマットできるだけでなく、文字列からも日付を解析できます。」
生徒
「特に、ofPatternで日本語を混ぜた表示ができるのが面白かったです!あと、エラーになりやすいmmとMMの違いも覚えておきます。」
先生
「その調子です。DateTimeFormatterをマスターすれば、アプリの画面表示もログの整形もバッチリですね。」
生徒
「はい!次はAPIと連携して、JSONの日時整形にも挑戦してみたいです。」
先生
「とても良い考えです。REST APIでもDateTimeFormatterは大活躍しますからね。ぜひ次のステップに進みましょう!」