JavaのSimpleDateFormatクラスを完全ガイド!初心者でもわかる日付フォーマットの基本
生徒
「先生、Javaで日付を好きな形に表示したいんですが、どうすればいいですか?」
先生
「それにはjava.textパッケージにあるSimpleDateFormatクラスを使う方法が便利です。指定したパターンに合わせて日付を文字列に整形できますよ。」
生徒
「例えば年や月や日を好きな順番で並べられるんですか?」
先生
「はい、できます。書式パターンを指定すれば、和暦風や西暦だけの表示など、自由に表現可能です。詳しく見てみましょう。」
1. java.textパッケージとSimpleDateFormatクラス
java.textパッケージは「文字や日付を整える道具箱」です。その中のSimpleDateFormatは、日付と時間を指定した型(パターン)どおりに並べ替えるための道具です。たとえばDate型(生の時刻データ)を人が読みやすい文字列にしたり、逆に文字列をDateに戻す入口になります。ログ表示や帳票、画面の見た目をそろえるときに欠かせないため、最初に身につけておくと後の学習がぐっと楽になります。
まずは「道具を用意する」イメージで、インスタンスを作ってみましょう。ここでは動かしても何も変換しませんが、パターンという“型紙”をセットする感覚だけつかんでください。
import java.text.SimpleDateFormat;
public class IntroSample {
public static void main(String[] args) {
// 「年/月/日」という並びの型紙(パターン)を用意
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
// どんな型紙を持っているか確認してみる
System.out.println("準備OK: " + sdf.toPattern());
}
}
準備OK: yyyy/MM/dd
この段階では「型紙を持った状態」になっただけです。次の章で、このSimpleDateFormatを使ってDateを文字列に整形する手順を体験していきます。
2. SimpleDateFormatの基本的な使い方
日付をフォーマットする基本的な流れは以下のようになります。
SimpleDateFormatのインスタンスを作成し、書式パターンを指定する。Date型のオブジェクトを用意する。formatメソッドで文字列に変換する。
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String formatted = sdf.format(now);
System.out.println(formatted);
}
}
2025/09/23 14:35:12
この例では現在の日付を「年/月/日 時:分:秒」の形式で出力しています。
3. 書式パターンの一覧
パターン文字を組み合わせることで自由に表示形式を変えられます。主な指定子は以下の通りです。
y:年(yyyyなら西暦4桁、yyなら下2桁)M:月(MMでゼロ埋め、Mなら1桁)d:日付E:曜日(EEEで短縮、EEEEで完全表示)H:24時間制の時h:12時間制の時m:分s:秒
例えば「yyyy年MM月dd日 EEEE」と指定すれば「2025年09月23日 火曜日」と表示できます。
4. 文字列を日付に変換する
SimpleDateFormatは文字列をDate型に変換するparseメソッドも持っています。外部ファイルやユーザー入力から受け取った日付文字列をプログラム内で扱いたい場合に利用します。
import java.text.ParseException;
public class ParseExample {
public static void main(String[] args) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date date = sdf.parse("2025/09/23");
System.out.println(date);
} catch (ParseException e) {
System.out.println("日付の解析に失敗しました。");
}
}
}
Tue Sep 23 00:00:00 JST 2025
フォーマットと文字列が一致しない場合はParseExceptionが発生するため、例外処理が必要です。
5. よく使うフォーマット例
実際の開発でよく使われるフォーマットを紹介します。
yyyy-MM-dd→ 2025-09-23HH:mm:ss→ 14:35:12yyyy/MM/dd HH:mm→ 2025/09/23 14:35yyyy年MM月dd日(E)→ 2025年09月23日(火)
システムログや帳票など、用途に応じて柔軟に指定できます。
6. タイムゾーンの設定
setTimeZoneメソッドを使えば、異なるタイムゾーンで日付を表示することも可能です。海外向けのシステムやグローバルアプリでは欠かせない機能です。
import java.util.TimeZone;
public class TimeZoneExample {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println("UTC: " + sdf.format(now));
}
}
UTC: 2025/09/23 05:35:12
このように指定することで世界中のユーザーに対応したアプリを作成できます。
7. 初心者が押さえるべきポイント
初心者がSimpleDateFormatを使う際に覚えておくべきことを整理します。
- フォーマットパターンを正しく指定しないと期待通りに表示されない。
parseを使うときは例外処理が必須。- タイムゾーンを設定すれば世界中の時間に対応できる。
- 帳票出力やログ記録など実用性の高い場面で広く使われる。
これらを理解しておけば、Javaでの日付や時刻の扱いがぐっと楽になります。
まとめ
今回の記事ではJavaのSimpleDateFormatクラスを中心に、日付フォーマットの基本から実践的な使い方までを詳しく学びました。日付や時刻を整形する処理は、システム開発においてログ管理、帳票出力、ユーザーインターフェース表示など多岐にわたる重要な場面で必要となります。特にyyyy/MM/ddやHH:mm:ssといったよく使うフォーマット指定は、初心者がまず最初に覚えておくべき代表的なパターンです。さらに曜日を表示するEや、ゼロ埋めを行うMMなど、細かな違いを意識することで表現の幅が広がります。
また、parseメソッドを活用することで文字列からDate型へ変換できる点も理解しました。これはユーザー入力や外部システムから取得した日付データを扱ううえで欠かせないテクニックです。その際にはParseExceptionへの例外処理が必須であることも重要なポイントでした。例外処理を正しく書いておくことで、予期しない入力があってもアプリケーションが安定して動作します。
タイムゾーンの設定もシステム開発では大切です。国内向けのアプリケーションだけでなく、海外ユーザーを対象とするWebシステムでは、setTimeZoneメソッドによってUTCや各国の標準時間を正しく表示できる仕組みが必要です。グローバル対応するシステムを構築する際に、この知識は欠かせません。
初心者がまず意識すべきなのは、フォーマットパターンを正しく覚えて適切に組み合わせること、そして必ず例外処理を行うことです。さらに、実務でよく使うパターンを身につけることで、ログや帳票などの出力に迷わず対応できるようになります。今回紹介した知識を土台として、SpringやJakartaEEなどのフレームワークでの日付管理にも応用できるようにしていくと、より実践的なスキルが身につくでしょう。
最後にサンプルコードとして、和暦や曜日を含んだ少し応用的なフォーマット例を確認してみましょう。
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class CustomFormatExample {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 EEEE HH時mm分ss秒", Locale.JAPANESE);
String formatted = sdf.format(now);
System.out.println("現在の時刻: " + formatted);
}
}
現在の時刻: 2025年09月23日 火曜日 14時35分12秒
この例のように日本語ロケールを指定すれば、曜日や時間の表記が自然な形で出力されます。日付の表示はアプリケーションの信頼性に直結するため、フォーマットを正しく使いこなすことはとても大切です。
生徒
「今日の記事で、JavaのSimpleDateFormatを使えば日付を自由に整形できるってわかりました。ログや帳票出力でよく出てくる理由も理解できました。」
先生
「その通りですね。特に実務ではyyyy/MM/ddやHH:mm:ssといった定番のパターンを使う機会が多いので、すぐに活用できるはずです。」
生徒
「parseメソッドで文字列から日付に変換できることも便利ですね。例外処理を忘れないように気をつけます。」
先生
「良い心がけです。実際に使ってみると入力エラーが必ず起きるので、例外処理があるかどうかでシステムの安定性が大きく変わります。」
生徒
「あと、タイムゾーンの設定も新しい発見でした。海外向けのシステムを作るときに役立ちそうですね。」
先生
「はい、グローバル対応のアプリでは必須です。JavaではsetTimeZoneを利用すれば簡単に切り替えられるので、覚えておくと便利です。」
生徒
「今回の学びで日付フォーマットを自信を持って使えそうです。次はSpringやJakartaEEでの応用も挑戦したいです!」
先生
「素晴らしい意欲ですね。まずは基本をしっかり使いこなし、応用でさらに成長していきましょう。」