Общий заголовок Date указывает на дату и время создания сообщения.

Значение даты/времени в протоколе HTTP может быть представлено в различных форматах. Протокол HTTP/1.0 поддерживает следующие форматы даты/времени:

Sun, 06 Nov 1994 08:49:37 GMT - согласно стандарту RFC 822, обновленный стандартом RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT - согласно стандарту RFC 850 обновленный стандартом RFC 1036
Sun Nov 6 08:49:37 1994 - согласно формату asctime() стандарта ANSI С

В стандарте RFC 2616 по протоколу HTTP/1.1 поддержка форматов даты/времени описана более конкретно. Клиенты и серверы при получении сообщения обязаны (уровень MUST) понимать все три формата даты, а при отправке обязаны (уровень MUST) представлять дату в первом формате (согласно стандарту RFC 1123).

Важно отметить, что заголовок Date всегда содержит дату создания сообщения, а не содержимого этого сообщения. Например, если клиенту возвращается кешированный ресурс, то это поле должно содержать дату создания ответа, а не дату кеширования ресурса. Короче говоря заголовок Date всегда содержит актуальную дату.

Применение PHP

Для получения заголовка запроса (сообщение, которое вы получили от клиента) Date проще всего обратиться к глобальному массиву $_SERVER['REQUEST_TIME']. Здесь время из заголовка запроса Date приведенно к формату Timestamp.

В PHP дату/время в формате стандарта RFC 1123 легко сгенерировать при помощи функции date(). Согласно стандарту RFC 822, время не обязательно должно быть по гринвичу (GMT или UT). Это положение не затронуто изменениями, внесенными стандартом RFC 1123. Время может быть задано для текущей временной зоны с указанием временного сдвига в плюс или минус на количество часов и минут, например:
Thu, 21 Dec 2000 16:01:07 +0200

Функция date() позволяет сгенерировать дату в этом формате с помощью всего лишь одного управляющего символа "r".

PHP
$date_as_rfc822 = date( 'r' ); // текущая дата в стандарте RFC 822

PHP позволяет так же легко конвертировать дату/время из строкового формата в формат timestamp при помощи функции strtotime().

PHP
$date_in_timestamp = strtotime( 'Sun, 06 Nov 1994 08:49:37 GMT' );

Эта функция без проблем воспринимает строки даты/времени во всех распространенных форматах включая стандарты RFC 1123, RFC 1036, asctime(), а так же весьма экзотические строковые представления даты/времени.

Комментарии:

  1. Слава

     

    Скрипт отсылает код подтверждения на телефон. Как сделать этот заголовок невидимым или хотя бы менее емким?

    Приходят смс такого вида:

    From: ex@ex.ru
    Date: Thu, 03 Apr 2014 17:56 +0400
    6959

    И из всего этого нужны только 4 цифры.

    • Автор

       

      Вы хотите, чтобы сервер не отправлял заголовки?
      Я не знаю, что это за заголовок From. Это явно не HTTP. Да и это не может быть HTTP, раз вы отправляете SMS. Похоже это почтовый заголовок.
      Поскольку я не знаю что, как и куда вы отправляете, то ничего посоветовать не могу.

      >>Скрипт отсылает код подтверждения на телефон.
      Это как это?

    • Слава

       

      > Это как это?

      Через этот сервис http://www.idknet.com/mobile/services/1053.html

      Отправка сообщения с электронной почты на мобильный телефон

      В поле "Адрес получателя" указать 77хxxxxx@sms.idknet.com, где хххххх номер мобильного телефона в сети IDC…

    • Автор

       

      Ну так что вы хотите. Все зависит от того, как работает этот сервис. Вы на это повлиять никак не можете. Что пришлет, то и пришлет.

  2. Дмитрий

     

    Спасибо. Пригодилось.

  3. Анатолий

     

    А зачем нужен этот заголовок? Специально посмотрел как мой браузер отправляет запросы на сайт - нет такого заголовка.

    • Автор

       

      Это информационный заголовок. В сообщение обязательно должна быть информация о том, когда оно было создано. Как же без этого?
      А ваш браузер просто напросто нарушает протокол.