

http приложения исторически допускали три различных формата для представления даты/времени:
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 C
Первый формат выбран в качестве стандарта Интернета и представляет подмножество фиксированной длины, как определено в RFC 1123 (модифицированном RFC 822). Второй формат находится в общем пользовании, но основан на устаревшем и потерявшем статус стандарта RFC 850 [12], описывающем форматы дат, он обладает тем недостатком, что год указывается не в четырехразрядной нотации. Клиенты и серверы HTTP/1.1, которые анализируют значение даты, ДОЛЖНЫ понимать все три формата (для совместимости с HTTP/1.0), но генерировать для представления значений дат в полях заголовка http ДОЛЖНЫ только формат RFC 1123.
Обратите внимание: Поощряется практика, при которой получатели значений дат здраво воспринимают значения дат, которые, возможно, посланы не http приложениями, что имеет место при загрузке или регистрации сообщений через прокси-сервера/шлюзы к SMTP или NNTP.
Все без исключений форматы http даты/времени ДОЛЖНЫ быть представлены в Greenwich Mean Time (GMT). В первых двух форматах данный факт указывается включением трехсимвольного сокращения "GMT" в качестве часового пояса. В asctime() формате это ДОЛЖНО подразумеваться при чтении.
HTTP-date = rfc1123-date | rfc850-date | asctime-date
rfc1123-date = wkday "," SP date1 SP time SP "GMT"
rfc850-date = weekday "," SP date2 SP time SP "GMT"
asctime-date = wkday SP date3 SP time SP 4DIGIT
date1 = 2DIGIT SP month SP 4DIGIT
; день месяц год (например 02 Jun 1982)
date2 = 2DIGIT "-" month "-" 2DIGIT
; день-месяц-год (напрмер 02-Jun-82)
date3 = month SP ( 2DIGIT | ( SP 1DIGIT ))
; месяц день (например, Jun 2)
time = 2DIGIT ":" 2DIGIT ":" 2DIGIT
; 00:00:00 - 23:59:59
wkday = "Mon" | "Tue" | "Wed"
| "Thu" | "Fri" | "Sat" | "Sun"
weekday = "Monday" | "Tuesday" | "Wednesday"
| "Thursday" | "Friday" | "Saturday" | "Sunday"
month = "Jan" | "Feb" | "Mar" | "Apr"
| "May" | "Jun" | "Jul" | "Aug"
| "Sep" | "Oct" | "Nov" | "Dec"
Обратите внимание: Эти требования - это требования к для форматам даты/времени, которые применяются внутри потока протокола http. Клиентам и серверам не требуется использовать эти форматы для представления пользователю, регистрации запросов и т.д.

