JavaのLocalDateとformatメソッドの使い方を完全ガイド!初心者でもわかる日付のフォーマット
生徒
「Javaで日付を"2025年09月04日"みたいに好きな形式で表示したいんですけど、どうやるんですか?」
先生
「それならjava.timeパッケージのLocalDateクラスとformatメソッドを使えば、簡単に日付を好きな形式に変換できますよ。」
生徒
「なるほど!じゃあ、そのformatメソッドの使い方を詳しく教えてください!」
先生
「では、LocalDateとformatの基本からやさしく説明していきましょう!」
1. java.timeパッケージとは?
Javaのjava.timeパッケージは、Java 8から追加された新しい日付と時間のAPIです。従来のjava.util.DateやCalendarよりも使いやすく、安全で読みやすいコードが書けるようになりました。
java.timeパッケージには日付や時刻、期間、タイムゾーンなどを扱うためのクラスが豊富に用意されています。その中でも、年月日をシンプルに扱うのがLocalDateです。
2. LocalDateクラスとは?
LocalDateは「年月日」のみを扱うクラスで、時刻(時分秒)は含まれません。たとえば、「2025年9月4日」のような日付をコードで表現したいときに使います。
現在日付の取得や、特定の日付の作成も簡単です。
import java.time.LocalDate;
public class LocalDateSample {
public static void main(String[] args) {
LocalDate today = LocalDate.now(); // 現在の日付
LocalDate birthday = LocalDate.of(2000, 5, 15); // 任意の日付
System.out.println("今日: " + today);
System.out.println("誕生日: " + birthday);
}
}
3. formatメソッドとは?
formatメソッドは、LocalDateの日付を「文字列」に変換するために使うメソッドです。これにより、日付を「yyyy/MM/dd」や「yyyy年MM月dd日」など任意のフォーマットで出力できます。
このメソッドは、引数としてDateTimeFormatterというクラスのインスタンスを必要とします。
4. formatメソッドの基本的な使い方
formatメソッドで日付を文字列に変換するには、まずDateTimeFormatterを定義しておき、それを引数として渡します。以下がその基本的な例です。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class FormatExample {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2025, 9, 4);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String formattedDate = date.format(formatter);
System.out.println("フォーマット後の日付: " + formattedDate);
}
}
実行結果は以下のようになります。
フォーマット後の日付: 2025年09月04日
5. よく使われる日付フォーマットのパターン
DateTimeFormatter.ofPatternでは、自由にフォーマットパターンを指定できます。以下はよく使われるパターンの例です。
yyyy/MM/dd→ 2025/09/04yyyy年MM月dd日→ 2025年09月04日MM-dd-yyyy→ 09-04-2025dd MMM yyyy→ 04 Sep 2025
表示形式を変えるだけで、ユーザーにとって見やすくなり、アプリケーションの使い勝手が向上します。
6. formatメソッドの実用例(Webアプリ・帳票・ログ)
実際の開発現場では、日付を「ユーザーに見せる」場面でformatメソッドが活躍します。
- Webアプリケーションの画面での表示(例:「注文日:2025年09月04日」)
- PDFやExcelなど帳票出力時の日付の整形
- ログ出力の整形で見やすくする
ただし、フォーマットにミスがあるとエラーになるため、パターン指定には注意が必要です。
7. formatメソッドとLocaleの活用
フォーマットを多言語対応させたい場合は、Localeを組み合わせて使うこともできます。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class FormatWithLocale {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2025, 9, 4);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMMM yyyy", Locale.ENGLISH);
System.out.println(date.format(formatter)); // 04 September 2025
}
}
8. formatメソッド使用時の注意点
formatメソッドを使用する際の注意点をまとめます。
- パターン文字列は正しく書く:
MM(月)とmm(分)を混同しないように注意! - NullPointerException:日付やフォーマッタが
nullだと例外が発生する - タイムゾーンには対応していない:
LocalDateは時差を扱わない