Метод toHTTP() в Luxon предназначен для
преобразования объекта DateTime в строку формата HTTP-date,
соответствующего стандарту RFC 7231. Этот формат используется в
протоколе HTTP для передачи дат в заголовках, где требуется строгое
представление времени в GMT.
Формат результата всегда фиксирован и не зависит от локали или настроек форматирования: используется английский язык, сокращённые названия дней недели и месяцев, а также обязательное указание временной зоны GMT.
Результирующая строка имеет вид:
Tue, 01 Jan 2019 00:00:00 GMT
Структура формата:
HH:mm:ssGMTDateTime.toHTTP()
Метод вызывается на экземпляре DateTime и возвращает
строку.
При вызове toHTTP() происходит:
Важно, что любые исходные настройки временной зоны объекта игнорируются при формировании результата.
import { DateTime } from "luxon";
const dt = DateTime.fromISO("2025-05-23T10:15:00", { zone: "Europe/Berlin" });
console.log(dt.toHTTP());
Результат:
Fri, 23 May 2025 08:15:00 GMT
Здесь локальное время было автоматически преобразовано в GMT.
Формат toHTTP() применяется при работе с
HTTP-заголовками, где требуется строго стандартизированная дата.
Dateres.setHeader("Date", DateTime.utc().toHTTP());
Expiresconst expires = DateTime.utc().plus({ days: 7 });
res.setHeader("Expires", expires.toHTTP());
Last-Modifiedconst lastModified = DateTime.fromJSDate(fileStats.mtime);
res.setHeader("Last-Modified", lastModified.toHTTP());
If-Modified-Sinceconst modifiedSince = DateTime.fromHTTP(req.headers["if-modified-since"]);
Метод toHTTP() обеспечивает совместимость с подобными
обратными преобразованиями.
Любое значение времени принудительно приводится к GMT, независимо от исходной зоны:
DateTime.local().setZone("Asia/Tokyo").toHTTP();
Результат всегда будет в GMT.
Метод не учитывает:
locale)Формат всегда англоязычный и стандартизированный.
Одно и то же мгновение времени всегда даёт одинаковую строку при
вызове toHTTP(), что критично для HTTP-кеширования и
проверки условных запросов.
toISO()dt.toISO();
Возвращает ISO 8601 формат:
2025-05-23T08:15:00.000Z
Используется в API и внутренних системах.
toRFC2822()dt.toRFC2822();
Пример:
Fri, 23 May 2025 08:15:00 +0000
Используется в email-протоколах.
toHTTP()dt.toHTTP();
Пример:
Fri, 23 May 2025 08:15:00 GMT
Используется исключительно в HTTP-протоколе.
Luxon поддерживает парсинг HTTP-даты:
DateTime.fromHTTP("Fri, 23 May 2025 08:15:00 GMT");
Это позволяет связать отправку и получение дат в рамках HTTP-запросов.
Метод toHTTP() вызывается только на валидных экземплярах
DateTime. Если объект содержит невалидное время:
const dt = DateTime.invalid("error");
результат:
dt.toHTTP(); // приводит к "Invalid DateTime"
При этом возвращаемая строка будет невалидной, что сигнализирует о проблеме в данных.
Cache-Control,
Expires);If-Modified-Since);Эквивалентные способы получения HTTP-даты:
DateTime.utc().toHTTP();
и
DateTime.local().toUTC().toHTTP();
В обоих случаях результат идентичен, поскольку форматирование всегда выполняется в GMT.
Формирование строки включает:
использование фиксированных массивов сокращений:
Mon, Tue, Wed …Jan, Feb, Mar …принудительное выравнивание чисел (день и время всегда с ведущими нулями)
строгий порядок компонентов без вариативности
toHTTP() закрывает узкую, но критически важную задачу:
интеграцию с HTTP-протоколом без необходимости ручного форматирования
дат. В отличие от универсальных методов форматирования, он ориентирован
исключительно на стандарты веб-коммуникации и серверного
взаимодействия.