Назад | Перейти на главную страницу

Создание даты, соответствующей RFC 1123, для создания HTTP-заголовка в CLI

Я пытаюсь создать заголовок даты, совместимый с HTTP 1/1, с использованием стандартной даты unix (1), чтобы отправить его на сервер RESTful с помощью curl или аналогичного.

Есть идеи, какой формат передать на сегодняшний день (1), чтобы он соответствовал RFC 1123?

Большое спасибо

env TZ=GMT date '+%a, %d %b %Y %T %Z'

  1. %T эквивалентно %H:%M:%S.
  2. %Z заменяется названием часового пояса.

Решение от @brad, DATE=$(date -u +%a,\ %d\ %b\ %Y\ %H:%M:%S\ GMT), будет неверным, если в вашей системе установлен часовой пояс, отличный от GMT. Например:

env TZ=Asia/Taipei date -u +%a,\ %d\ %b\ %Y\ %H:%M:%S\ GMT

%H:%M:%S будет GMT + 8, а вывод - GMT, чего не ожидается.

man date для любой версии даты, предоставляемой вашей ОС, и используйте правильные переключатели для печати (см. man strftime) слева направо с пробелом между ними, сначала дата:

День (трехбуквенное сокращение пн-вт-ср ...) с запятой ,,
месяц (трехбуквенное сокращение Янв Фев Мар ...)
год (четырехзначное обозначение 1970, 1971 ...)
а потом время HH:MM:SS.

И вы можете получить что-то вроде Fri, 20 May 2016 20:22:33 GMT