Кратко
- RFC 9636 стандартизует представление TZif, но не источник и не свежесть гражданских правил внутри конкретного файла.
- Legacy-блок, 64-битная таблица, границы усечения, footer и срок leap-таблицы ограничивают доказательную силу результата.
- Полная квитанция связывает намерение, зону, источник и выпуск, hash, диапазон, reader, политику неоднозначности, вычисленное время и действие системы.
Файл не ошибся. Он закончился.
Последний переход перевёл локальное время в -00, footer был пуст, а приложение продолжило использовать прежнее смещение. Оно скрыло правильный ответ «неизвестно» собственной политикой и назвало результат данными зоны.
RFC 9636 описывает, как не терять эту границу. Документ Standards Track заменяет RFC 8536, сохраняет совместимость и добавляет версию 4. Он не определяет источник собранных правил. База часовых поясов IANA — возможный источник, но сигнатура файла не доказывает ни IANA, ни номер выпуска.
Усечение ограничивает область утверждения
Переходы отсортированы и выбирают локальный тип со смещением от UT, флагом летнего времени и обозначением. Тип действует до следующего перехода. После последнего правила продолжает только непустой footer; иначе локальное время не задано.
TZDIST может специально сократить историю. В начале файла нулевой тип служит неопределённым состоянием до первой границы. В конце -00 и пустой footer отказываются утверждать будущее. Такой объект валиден внутри своего интервала, а не для всех дат.
Проверка должна сопоставлять запрошенный instant с диапазоном. Любая подстановка вне него — последний offset, зона хоста, UTC — является политикой приложения. Ей нужны владелец, версия, срок и отдельное предупреждение.
Один файл содержит две модели совместимости
Сначала всегда идут header и data block версии 1. Их 32-битные времена охватывают примерно 1901–2038 годы. Версии 2 и выше добавляют 64-битную таблицу и footer, оставляя старый блок для устаревших читателей.
Старый блок может быть placeholder. Тогда reader версии 1 видит отсутствие переходов и сокращений, а современный reader использует вторую часть. Факт успешного разбора одинаковых bytes не доказывает одинакового результата.
Сохраняйте версию формата и библиотеки, выбранный блок, проверки размеров и индексов, hash объекта, источник и release. Для дат после 2038 отдельно доказывайте, что не сработал legacy-путь.
Footer продолжает формулу, а не право
Footer может содержать POSIX-правило для времени после последнего сохранённого перехода. На стыке оно обязано совпасть с таблицей. Это внутренняя непрерывность, не обещание будущего законодательства.
После нового гражданского решения источник выпускает обновление. Для будущего события продукт должен выбрать: сохранить instant, сохранить wall time или запросить подтверждение. Если зона и release уже удалены, а событие сведено к UTC, исходное намерение восстановить нельзя.
Аббревиатура тоже не выбирает территорию. CST неоднозначно, а одинаковые сегодня offset могут разойтись завтра. Идентификатор зоны и путь его выбора необходимо хранить отдельно.
Версия 4 обозначает срок знания
Версия 4 позволяет усечь начало записей leap seconds и использовать последнюю запись как expiration. После неё таблица не говорит, будет ли очередная коррекция.
Reader может отказаться считать либо продолжить, игнорируя expiration и, возможно, выдав ошибку. Оба режима нельзя сводить к одному «успешно». Нужны отдельные статусы для результата в пределах таблицы и результата после её срока.
Резолюция 4 27-й CGPM касается будущего leap seconds. Она не доказывает, какую таблицу установила машина и какую ветвь выполнил код. Институциональное решение, пакет данных и running code — разные слои.
TLS не подтверждает свежесть смысла
TZif не содержит собственной защиты целостности или конфиденциальности. Счётчики массивов требуют проверки длины и границ. Публичная доставка должна быть защищена внешним слоем вроде TLS, иначе изменённые правила повредят календарям.
TLS подтверждает канал к endpoint, но не правильность выбранного release, свежесть ETag, обновление cache и дальнейшую неизменность файла. Квитанция поставки включает источник, выпуск, URL, ETag, время, hash, возраст cache и установку.
Запрос зоны способен раскрыть прошлое, настоящее или будущее местоположение. Публичность правил не делает публичной историю выбора пользователя.
От отображения к событию
RFC 3339 кодирует instant и offset, RFC 9557 может добавить имя зоны, RFC 5545 описывает календарь. Но они не обязаны включать точный TZif, release и решение для повторённого или отсутствующего wall time.
Таблица показывает структуру неоднозначности. Приложение выбирает ранний или поздний instant, сдвиг, отказ либо вопрос человеку. Затем нужен следующий receipt: действительно ли задание, окно или встреча начались.
Цепочка отделяет гражданское намерение, выбор зоны, источник, artefact, reader, результат, решение приложения и эффект. RFC 9636 владеет значением bytes, но не местом, будущим законом и выполнением.
Источники
- Heng Lu — Minimum Initial Specification
- Heng Lu — Running-Code Primacy
- Heng Lu — Reality Layers
- IETF Datatracker — история RFC 9636
- Страница RFC 9636
- RFC 9636 — TZif
- RFC 9636 — текст
- RFC 9636 — XML
- Поиск errata RFC 9636
- RFC 8536 — предыдущая спецификация TZif
- RFC 7808 — TZDIST
- RFC 6557 — сопровождение базы зон
- RFC 9557 — расширенные timestamps
- RFC 5545 — iCalendar
- RFC 3339 — Internet timestamps
- RFC 8446 — TLS 1.3
- IANA Time Zone Database
- Резолюция 4 27-й CGPM
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров

