SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【php】HTTP-date形式の時刻を出力する

問題

HTTPレスポンスヘッダにHTTP-date形式の時刻を出力したい。

この形式の日付はどうやって出力するの?

Date: Thu, 29 Aug 2019 05:04:24 GMT
Expires: Sat, 04 Jan 2020 19:30:32 GMT
Last-Modified: Mon, 08 Feb 2016 15:07:23 GMT

答え

以下のphpで出ます。

・現在時刻の場合

gmdate('D, d M Y H:i:s T');

・指定したタイムスタンプの場合

gmdate('D, d M Y H:i:s T', $timestamp);

この日付の形式は IMF-fixdateと呼ばれます → RFC7231

phpのdate関数、datetimeクラスの日付形式に、RFC 2822形式(RFC1123形式)で出力できる近いものがありますが、少し違います。

date('r'); // Sun, 19 Jan 2020 03:06:01 +0000

末尾の +0000 が GMT なら使えるんですけど。

そういうわけで、HTTPヘッダの Last-Modifiedなどに出力するときは以下のようにしましょう。

// 例えば1日前
header('Last-Modified: ' . gmdate('D, d M Y H:i:s T', time() - 60*60*24));

関連するメモ

コメント