【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));
コメント