Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
DateTimeFormatter.ofPattern() / 日付.format()
日時を指定したパターンの文字列に変換(フォーマット)したり、文字列から日時オブジェクトに変換(パース)したりするクラスです(Java 8+)。DateTimeFormatter は LocalDate・LocalDateTime などと組み合わせて使います。
構文
// フォーマットパターンを指定してフォーマッターを作成します。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
// 日時を文字列に変換します。
String str = 日時オブジェクト.format(formatter);
// 文字列から日付を作成します。
LocalDate date = LocalDate.parse(文字列, formatter);
// 文字列から日時を作成します。
LocalDateTime dateTime = LocalDateTime.parse(文字列, formatter);
メソッド一覧
| メソッド・パターン | 概要 |
|---|---|
| DateTimeFormatter.ofPattern(String) | 指定したパターン文字列でフォーマッターを作成します。 |
| format(DateTimeFormatter) | 日時オブジェクトを指定したフォーマッターで文字列に変換します。 |
| LocalDate.parse(String, formatter) | 文字列を指定したフォーマッターで LocalDate に変換します。 |
| yyyy | 年(4桁)。例: 2025 |
| MM | 月(2桁ゼロ埋め)。例: 04 |
| dd | 日(2桁ゼロ埋め)。例: 01 |
| HH | 時(24時間表記・2桁ゼロ埋め)。例: 14 |
| mm | 分(2桁ゼロ埋め)。例: 30 |
| ss | 秒(2桁ゼロ埋め)。例: 00 |
サンプルコード
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
// LocalDate を日本式にフォーマットします。
LocalDate date = LocalDate.of(2025, 4, 1);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String formatted = date.format(formatter);
System.out.println(formatted); // 『2025年04月01日』と出力されます。
// LocalDateTime を日時形式にフォーマットします。
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dtFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
System.out.println(now.format(dtFormatter)); // 例: 『2025/04/01 14:30:00』と出力されます。
// 文字列を LocalDate にパースします。
String dateStr = "2025-12-25";
LocalDate christmas = LocalDate.parse(dateStr); // ISO形式は formatter 不要。
System.out.println(christmas.getMonthValue()); // 『12』と出力されます。
// カスタムパターンでパースします。
String customStr = "01/04/2025";
DateTimeFormatter customFmt = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate customDate = LocalDate.parse(customStr, customFmt);
System.out.println(customDate.getYear()); // 『2025』と出力されます。
// 定義済みフォーマッターを使います。
System.out.println(date.format(DateTimeFormatter.ISO_LOCAL_DATE)); // 『2025-04-01』と出力されます。
概要
パターン文字列では大文字・小文字が意味を持ちます。特に月は MM(数字)と MMM(省略名: Jan など)、MMMM(フル名: January など)で異なります。パターン文字列を誤ると DateTimeParseException がスローされるため、入力する文字列のフォーマットとパターンを一致させてください。
ISO 8601 形式(yyyy-MM-dd)の文字列は LocalDate.parse(文字列) でフォーマッター省略が可能です。
日付の取得・生成については『LocalDate.now() / of() / getYear()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。