HTTP 标头中使用的日期/时间格式

2024-04-30

哪个 RFC 描述了现代 HTTP 标头中用于日期/时间的格式,例如“Last-Modified”和“If-Modified-Since”,以及如何根据这种格式在 PHP 中生成日期/时间字符串?

一些来源指向 RFC 2822,如DateTime http://www.php.net/manual/en/class.datetime.php类,正在使用D, d M Y H:i:s O格式,但根据我的测试,这种格式会产生+0000代替GMT在最后。我尝试了其他时区说明符,但它们似乎都没有GMT最后,我得到的最接近的结果是UTC。然而,正如 Firebug 所示,所有站点都在使用GMT在 HTTP 标头中而不是+0000 or UTC.

那么真正使用什么格式以及如何像其他网站一样格式化日期/时间?


如你看到的here http://en.wikipedia.org/wiki/List_of_HTTP_header_fields, Last-Modified标头的日期时间为RFC2616 https://www.rfc-editor.org/rfc/rfc2616 format.

在部分14.29 Last-Modified https://www.rfc-editor.org/rfc/rfc2616#section-14.29你可以看到日期格式应该是:

"Last-Modified" ":" HTTP-date

它的使用示例是

Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT

Another quote from RFC2616 read more https://www.rfc-editor.org/rfc/rfc2616#section-3.3 :

所有 HTTP 日期/时间戳必须以格林威治标准时间 (GMT) 表示,无一例外。

在 PHP 中你可以使用格式D, d M Y H:i:s T如果你使用函数gmdate()它始终返回 GMT 偏移量/时区中的日期时间:

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

如果您想使用DateTime扩大:

$dt = new DateTime('UTC');
#$dt = new DateTime('2013-01-01 12:00:00', new DateTimezone('UTC'));
echo $dt->format('D, d M Y H:i:s \G\M\T');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP 标头中使用的日期/时间格式 的相关文章

随机推荐