【PHP8.x】formatメソッドの使い方

formatメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

formatメソッドは、DateTimeImmutableオブジェクトが保持する日時情報を、指定された形式で文字列として返すメソッドです。このメソッドを使用することで、日付や時刻を様々な表示形式に変換し、アプリケーションの要件やユーザーの好みに合わせた出力を実現できます。

formatメソッドは、書式指定文字列を引数として受け取ります。書式指定文字列は、日付や時刻の各要素(年、月、日、時、分、秒など)をどのように表現するかを定義する特殊な文字列です。PHPのDateTime関連関数では、特定の文字が特別な意味を持ち、それぞれ対応する日付や時刻の要素に置換されます。例えば、Y は4桁の西暦、m は2桁の月、d は2桁の日を表します。

formatメソッドの戻り値は、書式指定文字列に基づいてフォーマットされた日付と時刻の文字列です。DateTimeImmutableオブジェクトが保持する日時情報が、指定された書式に従って文字列として返されます。

システムエンジニアがformatメソッドを使用する際には、まずDateTimeImmutableオブジェクトを作成し、そのオブジェクトに対してformatメソッドを呼び出します。書式指定文字列は、要件に合わせて適切に選択する必要があります。PHPのマニュアルには、利用可能なすべての書式指定文字とその意味が詳しく記載されています。

例えば、$date->format('Y-m-d H:i:s') は、日付を YYYY-MM-DD HH:MM:SS の形式で出力します。このメソッドを理解し、適切に使用することで、日付と時刻のデータを効果的に処理し、ユーザーにわかりやすい形で表示することができます。また、ログ出力やデータ保存など、様々な場面で日付と時刻の情報を整形する際に役立ちます。

構文(syntax)

1<?php
2$date = new DateTimeImmutable();
3echo $date->format('Y-m-d H:i:s');
4?>

引数(parameters)

string $format

  • string $format: 日付や時刻の表示形式を指定する文字列

戻り値(return)

string

指定されたフォーマット文字列に基づいて、日付と時刻を文字列として返します。

サンプルコード

PHP DateTimeImmutable::format で日付を整形する

1<?php
2
3/**
4 * DateTimeImmutable::format メソッドの基本的な使用例を示す関数です。
5 * この関数は、現在の日付と時刻を異なるフォーマットで表示します。
6 *
7 * @return void
8 */
9function displayFormattedDates(): void
10{
11    // 現在の日付と時刻を表すDateTimeImmutableオブジェクトを作成します。
12    // DateTimeImmutableは、一度作成されるとその値が変更されない(不変)日付/時刻オブジェクトです。
13    $currentDateTime = new DateTimeImmutable();
14
15    echo "--- 現在の日付と時刻のフォーマット例 ---\n";
16
17    // よく使用される標準的なフォーマット (年-月-日 時:分:秒)
18    echo "標準日時 (Y-m-d H:i:s): " . $currentDateTime->format('Y-m-d H:i:s') . "\n";
19
20    // 読みやすい日付形式 (例: January 20, 2024)
21    echo "読みやすい日付 (F j, Y): " . $currentDateTime->format('F j, Y') . "\n";
22
23    // ISO 8601 形式 (国際標準の日付時刻形式)
24    echo "ISO 8601 形式: " . $currentDateTime->format(DateTimeInterface::ISO8601) . "\n";
25
26    // 曜日名のみ
27    echo "曜日名 (l): " . $currentDateTime->format('l') . "\n";
28
29    // 時刻のみ (時:分)
30    echo "時刻のみ (H:i): " . $currentDateTime->format('H:i') . "\n";
31
32    // 年月日 (スラッシュ区切り)
33    echo "年月日 (Y/m/d): " . $currentDateTime->format('Y/m/d') . "\n";
34
35    // Unixタイムスタンプ (1970年1月1日 00:00:00 UTCからの秒数)
36    echo "Unixタイムスタンプ (U): " . $currentDateTime->format('U') . "\n";
37
38    echo "\n--- 特定の日付と時刻のフォーマット例 ---\n";
39
40    // 特定の日付と時刻を指定してDateTimeImmutableオブジェクトを作成します。
41    $specificDateTime = new DateTimeImmutable('2023-01-15 14:30:00');
42
43    // 指定した日付を標準日時形式でフォーマット
44    echo "指定日時 (Y-m-d H:i:s): " . $specificDateTime->format('Y-m-d H:i:s') . "\n";
45
46    // 指定した日付を別の形式でフォーマット
47    echo "指定日時 (g:i A, M j, Y): " . $specificDateTime->format('g:i A, M j, Y') . "\n";
48}
49
50// 上記の関数を実行し、フォーマットされた日付と時刻を表示します。
51displayFormattedDates();
52
53?>

DateTimeImmutable::formatメソッドは、PHPで日付や時刻の情報を、指定した書式(フォーマット)の文字列として取得するための重要な機能です。このメソッドが所属するDateTimeImmutableクラスは、一度作成された日時情報を変更できない「不変」なオブジェクトとして扱います。

formatメソッドは、引数としてstring $formatを受け取ります。この$formatには、年、月、日、時、分、秒、曜日などを表す特定の「書式指定子」を組み合わせた文字列を指定します。例えば、「Y-m-d H:i:s」は「2024-01-20 15:30:00」のような形式を、「F j, Y」は「January 20, 2024」のような形式を意味します。戻り値は、指定された書式に従って整形された日付時刻のstring型データです。

サンプルコードでは、まずnew DateTimeImmutable()で現在の日時を表すオブジェクトを作成し、続けて$currentDateTime->format('Y-m-d H:i:s')のように、様々な書式指定子を使って現在の日時を整形して表示しています。また、new DateTimeImmutable('2023-01-15 14:30:00')のように、特定の日時を指定してオブジェクトを作成し、それを異なるフォーマットで出力する例も示されています。このメソッドは、システム開発において、日時表示の柔軟な制御を可能にします。

DateTimeImmutable::formatメソッドは、日付や時刻を、指定した書式で文字列に変換する際に使用します。最も重要な注意点は、引数に指定するフォーマット文字列の書き方です。例えば、『Y』は年、『m』は月を表しますが、大文字と小文字で意味が大きく異なる場合があるため、PHPの公式ドキュメントで各フォーマット文字の正確な意味と使用方法を必ず確認してください。指定を間違えると、意図しない日付や時刻が表示される原因となります。また、DateTimeImmutableオブジェクトは一度作成されるとその値が変更されない「不変(イミュータブル)」な性質を持っています。formatメソッドを呼び出しても、元のオブジェクト自体は変化せず、新しいフォーマット済み文字列が返されるだけです。DateTimeInterface::ISO8601のような定数を利用すると、国際標準などの標準的なフォーマットを簡単に指定できます。