Дата и время · форматы датДата RFC 2822 — письма и HTTP
RFC 2822 — формат даты из заголовка Date: письма, RSS и HTTP: Sat, 03 Oct 2026 14:30:00 +0300. Вставьте строку — инструмент разберёт её по частям, переведёт в ваш часовой пояс и скажет, что в ней не так: неверный день недели, двузначный год, зона именем вместо смещения.
Считается в браузере — значения никуда не отправляются
Формат описан в RFC 2822 (2001), сейчас действует RFC 5322 с той же записью даты. Порядок: день недели, число, месяц тремя латинскими буквами, год четырьмя цифрами, время и смещение от UTC — четыре цифры со знаком.
В HTTP используется тот же формат с одним ограничением (RFC 7231, IMF-fixdate): время всегда в GMT, а день недели обязателен. Так записаны Last-Modified, Expires и Date в ответах серверов, и так их отдаёт JavaScript-метод toUTCString().
Стандарт разрешает читать устаревшие формы — двузначный год, имена зон UT, GMT, EST, PST, — но писать их нельзя. Смещение -0000 значит не «Гринвич», а «местное время отправителя неизвестно».
Разбор по частямSat, 03 Oct 2026 14:30:00 +0300
Sat,
день недели — обязан совпадать с датой
03 Oct 2026
число, месяц тремя латинскими буквами, год четырьмя цифрами
14:30:00
время отправителя; секунды можно опустить
+0300
смещение от UTC: +0300 — Москва, -0000 — «неизвестно»
Как сделать то же самое
new Date().toUTCString()JavaScript: HTTP-дата в GMT
date -RLinux: текущая дата в RFC 2822 с местным смещением
2026-10-03 11:30 UTC · год двумя цифрами, время неизвестно
04
Частые ошибки
Месяц и день недели по-русски или с точкой («окт.», «Сб») — такую строку не разберёт ни почтовый клиент, ни парсер: в формате только трёхбуквенные английские сокращения.
Зона именем: MSK, CET, IST. Стандарт знает только американские имена и GMT, остальные неоднозначны — IST означает и Индию, и Ирландию. Пишите смещение: +0300.
День недели не совпадает с датой — так выглядит строка, собранная руками или шаблоном. Многие парсеры молча берут число и игнорируют день, и ошибка доживает до продакшена.
05
Частые вопросы
Запись даты из стандарта интернет-сообщений: Sat, 03 Oct 2026 14:30:00 +0300. День недели, число, месяц тремя английскими буквами, четырёхзначный год, время и смещение от UTC. Её ставят в заголовок Date: каждого письма, в RSS-ленты и — в варианте «всегда GMT» — в заголовки HTTP. Сейчас стандарт называется RFC 5322, но формат даты в нём тот же.
ISO 8601 пишет от крупного к мелкому цифрами — 2026-10-03T14:30:00+03:00 — и сортируется как текст, поэтому его любят базы данных и API. RFC 2822 удобнее читать человеку, но месяц и день недели в нём словами, а смещение без двоеточия. Перевод между ними однозначен: момент один и тот же, меняется только запись.
Что местное время отправителя неизвестно. Стандарт различает +0000 — «это время по Гринвичу» — и -0000 — «время указано в UTC, потому что свой часовой пояс система не знает». Момент при этом тот же, разница только в том, можно ли судить о поясе отправителя. Так часто пишут почтовые роботы и серверы без настроенного пояса.
IMF-fixdate из стандарта HTTP (RFC 9110, ранее RFC 7231): Sat, 03 Oct 2026 11:30:00 GMT. Это RFC 2822 с двумя ограничениями: время всегда в GMT, а день недели обязателен. Так записаны Date, Last-Modified, Expires и If-Modified-Since. Устаревшие форматы RFC 850 и asctime сервер обязан понимать, но отправлять их нельзя.
Строку собрали вручную или шаблоном, а день недели не пересчитали из даты. Почтовые клиенты обычно берут число и месяц и день недели игнорируют, поэтому ошибка годами живёт незамеченной — например, в рассылках, где дату подставляют из настроек. Проверьте строку на этой странице: если день не совпадает, инструмент скажет, какой день на самом деле.
В JavaScript метод toUTCString() даёт HTTP-вариант с GMT: Sat, 03 Oct 2026 11:30:00 GMT. Смещения вроде +0300 он не пишет — его придётся собрать вручную или взять библиотеку. В Python есть email.utils.format_datetime(datetime) для момента с поясом и email.utils.formatdate(localtime=True) для текущего времени. В Linux — команда date -R.