Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】DateTimeImmutable::RFC7231定数の使い方

RFC7231定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

RFC7231定数は、HTTP/1.1の標準であるRFC 7231で定義されている日付フォーマットを表す定数です。この定数は、PHPのDateTimeImmutableクラスに属しており、特定の日付や時刻を、HTTPヘッダーなどで要求される国際標準の文字列形式に変換する際に利用されます。

具体的には、「曜日, 日 月 年 時:分:秒 GMT」のような形式、例えば「Mon, 15 Aug 2024 12:34:56 GMT」といった形式を表します。これは、曜日、日、月、年、時、分、秒がGMT(グリニッジ標準時、現在はUTCとほぼ同義)で表現される、広く利用されている日付の標準フォーマットです。

Webアプリケーション開発において、HTTPレスポンスのDateヘッダーやLast-Modifiedヘッダーなど、日付情報を送信する必要がある場合にこの定数を使用することで、互換性のある形式を簡単に生成できます。DateTimeImmutableオブジェクトのformat()メソッドにこの定数を渡すことで、指定された日付オブジェクトからRFC 7231形式の文字列を得ることができます。例えば、$date->format(DateTimeImmutable::RFC7231)のように記述します。これにより、手動で複雑なフォーマット文字列を記述する手間を省き、記述ミスによるエラーのリスクを低減することができます。

システムエンジニアを目指す皆さんにとって、Web通信で日付情報を扱う際の国際標準を理解し、この定数を用いて正確に実装することは、サーバーとクライアント間の円滑なデータ交換を保証するために非常に重要なスキルの一つです。

構文(syntax)

1<?php
2
3echo DateTimeImmutable::RFC7231;

引数(parameters)

引数なし

引数はありません

戻り値(return)

string

DateTimeImmutable::RFC7231 は、HTTP の Date ヘッダーで使用されるフォーマットを表す文字列を返します。

サンプルコード

PHP DateTimeImmutable::RFC7231 で日時をフォーマットする

1<?php
2
3/**
4 * 現在の日時をRFC 7231形式でフォーマットし、出力します。
5 *
6 * DateTimeImmutable::RFC7231 定数は、HTTPヘッダーなどで一般的に使用される日付形式
7 * "D, d M Y H:i:s T" を表す文字列です。
8 *
9 * この関数は、システムエンジニアがWebアプリケーションなどで日付を標準的な形式で
10 * 表現する必要がある場合の使い方を示しています。
11 */
12function displayRfc7231FormattedDateTime(): void
13{
14    // 現在の日時を表すDateTimeImmutableオブジェクトを作成します。
15    // DateTimeImmutableは、一度作成されると内容が変更されない(イミュータブルな)日付時刻オブジェクトです。
16    $currentDateTime = new DateTimeImmutable();
17
18    // DateTimeImmutable::RFC7231 定数を使用して、現在の日時をRFC 7231形式の文字列にフォーマットします。
19    $formattedDateString = $currentDateTime->format(DateTimeImmutable::RFC7231);
20
21    // フォーマットされた日付文字列を出力します。
22    echo "現在の日時 (RFC 7231形式): " . $formattedDateString . PHP_EOL;
23
24    // 参考: DateTimeImmutable::RFC7231 定数自体がどのような文字列を持っているかを確認することもできます。
25    // echo "RFC 7231フォーマット定数の値: " . DateTimeImmutable::RFC7231 . PHP_EOL;
26}
27
28// 関数を実行し、結果を表示します。
29displayRfc7231FormattedDateTime();

PHPのサンプルコードは、現在の日時をWebアプリケーションなどでよく使われるRFC 7231という形式で表示する方法を示しています。DateTimeImmutable::RFC7231は、DateTimeImmutableクラスが持つ特別な定数で、「D, d M Y H:i:s T」という日付フォーマットを表す文字列です。この定数自体は引数を取らず、常にこの固定の文字列を返します。

コードではまず、現在のシステム日時を表すDateTimeImmutableオブジェクトを作成します。DateTimeImmutableは一度作成されると内容が変わらない(イミュータブルな)日付時刻オブジェクトです。次に、このオブジェクトのformat()メソッドを使用し、引数としてDateTimeImmutable::RFC7231定数を渡します。これにより、現在の日時がRFC 7231形式の文字列に変換され、$formattedDateStringに格納されます。format()メソッドの戻り値は、指定された形式でフォーマットされた日付文字列です。最後に、このフォーマットされた日付文字列を画面に出力しています。

この定数を使うことで、HTTPヘッダーなどで標準的に要求される日付形式を簡単に実現でき、システムエンジニアがWebサービスの開発で日付情報を正確に扱う際に役立ちます。

このサンプルコードでは、DateTimeImmutable::RFC7231が特定の日付形式を表す単なる文字列定数であることを理解することが重要です。この定数自体は日付データではなく、DateTimeImmutableオブジェクトのformat()メソッドと組み合わせて、日時をRFC 7231形式の文字列に変換するために使用します。

DateTimeImmutableクラスは、一度作成されると内容が変更されない「イミュータブル」な性質を持つため、意図しない日付の変更を防ぎ、コードの信頼性を高める上で非常に有用です。特にWebアプリケーションのHTTPヘッダーなど、標準的な日付形式が厳密に要求される場面で、安全かつ正確な日付表現を実現するのに役立ちます。この定数はPHP 8以降で利用できます。

PHPでRFC7231形式日時を取得する

1<?php
2
3/**
4 * 現在の時刻を RFC 7231 (HTTP-date) 形式でフォーマットして返します。
5 *
6 * RFC 7231 は、HTTP ヘッダーなどで使用される日付フォーマットを定義しており、
7 * タイムゾーンは GMT (UTC) である必要があります。
8 *
9 * @return string RFC 7231 形式でフォーマットされた日時文字列。例: "Tue, 15 Nov 1994 12:45:26 GMT"
10 */
11function getCurrentDateTimeRfc7231(): string
12{
13    // 現在の時刻を UTC タイムゾーンでDateTimeImmutableオブジェクトとして取得します。
14    // RFC 7231 の仕様では、時刻は GMT (UTC) で表現される必要があります。
15    $now = new DateTimeImmutable('now', new DateTimeZone('UTC'));
16
17    // DateTimeImmutable::RFC7231 定数を使用して、日付を RFC 7231 形式でフォーマットします。
18    // この定数は 'D, d M Y H:i:s T' というフォーマット文字列を表します。
19    return $now->format(DateTimeImmutable::RFC7231);
20}
21
22// 関数を実行し、フォーマットされた現在時刻を出力します。
23echo getCurrentDateTimeRfc7231() . PHP_EOL;

このPHPコードは、現在の時刻をRFC 7231という特定の形式でフォーマットし、文字列として取得する方法を示しています。RFC 7231は、HTTP通信などで利用される日付フォーマットの国際標準であり、時刻は常にUTC(協定世界時、GMTと同等)で表現されるという特徴があります。

getCurrentDateTimeRfc7231関数は引数なしで呼び出すことができ、RFC 7231形式でフォーマットされた日時文字列を返します。関数内では、まずnew DateTimeImmutable('now', new DateTimeZone('UTC'))を使用して、現在の時刻をUTCタイムゾーンのDateTimeImmutableオブジェクトとして取得します。これは、RFC 7231の仕様で時刻がUTCで表現されることが求められているためです。

次に、この日時オブジェクトのformatメソッドを呼び出し、引数にDateTimeImmutable::RFC7231定数を指定します。この定数は、RFC 7231の要件に合致する具体的なフォーマット文字列(例: 'D, d M Y H:i:s T')を内部的に保持しており、開発者が複雑なフォーマット文字列を覚えることなく、標準的な日時文字列を容易に生成できるように設計されています。

結果として、この関数は「Tue, 15 Nov 1994 12:45:26 GMT」のような形式の日時文字列を戻り値として提供します。この形式は、Webサーバーとクライアント間の日時情報のやり取りなど、システム間で正確な時間同期が必要な場面で特に役立ちます。

RFC7231形式の日時を生成する際は、タイムゾーンの指定が特に重要です。この形式はHTTPヘッダーなどで利用され、必ずGMT(UTC)である必要があります。サンプルコードのようにnew DateTimeZone('UTC')で明示的にUTCを設定することで、意図しないタイムゾーンでの出力による通信エラーを防げます。また、DateTimeImmutable::RFC7231定数を使用すると、複雑なフォーマット文字列を覚える必要がなく、確実にRFC7231に準拠した形式を得られます。この定数はD, d M Y H:i:s Tという文字列を表しており、手動でフォーマット文字列を記述する際の誤りを防止します。DateTimeImmutableクラスは一度生成されると変更されないため、安全で予測可能なコードを書く助けになります。

関連コンテンツ

関連IT用語

関連プログラミング言語