The date/time format used in HTTP headers

As you can see here, Last-Modified header has datetimes in RFC2616 format.

In section 14.29 Last-Modified you can see that date format should be:

"Last-Modified" ":" HTTP-date

An example of its use is

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

Another quote from RFC2616 read more :

All HTTP date/time stamps MUST be represented in Greenwich Mean Time (GMT), without exception.

In PHP you can use format D, d M Y H:i:s T if you use function gmdate() which always returns datetime in GMT offset/timeszone:

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

If you wish to use DateTime extension:

$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');

Well, let's have a look at RFC 2616 which defines HTTP 1.1: https://www.rfc-editor.org/rfc/rfc2616#section-3.3

HTTP applications have historically allowed three different formats for the representation of date/time stamps:

 Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
 Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
 Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format

The first format is preferred as an Internet standard and represents a fixed-length subset of that defined by RFC 1123 [8] (an update to RFC 822 [9]).

(...)

All HTTP date/time stamps MUST be represented in Greenwich Mean Time (GMT), without exception.

So DateTime::COOKIE or Datetime::RFC850 use a valid format. The preferred one according to the RFC would be D, d M Y H:i:s T which is not defined by any constant in the DateTime class.

To make sure that GMT is used, the following code should suffice:

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

Tags:

Php

Http

Date

Rfc