ISO 8601
ISO 8601 — это международный стандарт, устанавливающий правила представления дат, времени и интервалов времени в цифровом формате для обеспечения однозначного понимания информационными системами и людьми в разных странах. Официальное полное название стандарта: «ISO 8601:2004 — Data elements and interchange formats — Information interchange — Representation of dates and times» (с 2019 года действует актуальная версия ISO 8601-1:2019 и ISO 8601-2:2019). Стандарт разработан Международной организацией по стандартизации (ISO) и широко применяется в программном обеспечении, базах данных, документах, логистике, науке и технике.
История
Разработка стандарта началась в 1970-х годах в связи с необходимостью унификации форматов даты и времени в электронном обмене данными (EDI). Первая версия была опубликована в 1988 году как ISO 8601:1988. Она объединила несколько более ранних стандартов, таких как ISO 2014 (написание дат), ISO 2015 (нумерация недель) и ISO 3307 (обозначение времени). Впоследствии были выпущены пересмотренные версии: ISO 8601:2000 и ISO 8601:2004, которая стала наиболее распространённой. В 2019 году стандарт был разделён на две части: ISO 8601-1:2019 (основные положения) и ISO 8601-2:2019 (расширения, включая условные форматы). В России действует национальный стандарт ГОСТ Р ИСО 8601-2006, идентичный международному.
Основные принципы
Главная цель стандарта — устранение неоднозначности, возникающей из-за национальных и культурных различий. Например, запись «03/04/05» может быть прочитана как 3 апреля 2005 года, 4 марта 2005 года или 5 апреля 2003 года в зависимости от страны. ISO 8601 использует строгую иерархическую структуру: от более крупных единиц к более мелким. Все даты и время указываются в 24-часовом формате, а время привязано к Всемирному координированному времени (UTC) или к местному времени с указанием смещения.
Форматы дат
Основной формат даты по ISO 8601 — YYYY-MM-DD (год, месяц, день, разделённые дефисами). Дефисы являются необязательными в базовом формате, но в расширенном формате (например, 2025-04-03) они обязательны для улучшения читаемости. Месяцы и дни всегда дополняются ведущими нулями. Например, 3 апреля 2025 года записывается как 2025-04-03 или 20250403.
Стандарт также определяет:
- Год — всегда четырёхзначное число. Для дат до 1582 года (до введения григорианского календаря) или после 9999 года допускается использование знака «+» или «-» перед годом, например, +2025 или -0001 (1 год до н. э.).
- Порядковый номер дня в году — от 001 до 365 (или 366 для високосных). Например, 2025-093 означает 93-й день 2025 года (3 апреля).
- Недельная дата — год и номер недели (от 01 до 53) с указанием дня недели (от 1 — понедельник, до 7 — воскресенье). Формат: YYYY-Www-D. Например, 2025-W14-4 означает четверг (день 4) 14-й недели 2025 года. Неделя считается с понедельника; первая неделя года — та, которая содержит первый четверг года (по правилу ISO).
Форматы времени
Время записывается в 24-часовом формате: hh:mm:ss (часы, минуты, секунды, разделённые двоеточиями). Часы имеют диапазон от 00 до 23, минуты и секунды — от 00 до 59. Секунды могут включать дробную часть (десятые, сотые и т. д.), отделяемую запятой или точкой, хотя ISO рекомендует запятую. Например, 14:30:00 (14 часов 30 минут 0 секунд) или 14:30:05,75.
Для указания временной зоны используются:
- Символ Z — обозначает время по UTC (например, 14:30:00Z).
- Смещение от UTC — в виде ±hh:mm (положительное — к востоку от Гринвича, отрицательное — к западу). Например, 14:30:00+03:00 означает 14:30 по времени Москвы (UTC+3).
Если смещение не указано, подразумевается местное время, что может приводить к неоднозначности при обмене данными.
Комбинированные дата и время
Дата и время объединяются через символ T (англ. time). Например: 2025-04-03T14:30:00Z (3 апреля 2025 года 14:30 по UTC). Базовый формат: 20250403T143000Z.
Интервалы времени
ISO 8601 определяет три способа обозначения интервалов (промежутков времени):
- Начало и конец — через косую черту (/). Например: 2025-04-03/2025-04-05 (период с 3 по 5 апреля 2025 года включительно).
- Продолжительность (duration) — с префиксом P, в формате P[n]Y[n]M[n]DT[n]H[n]M[n]S. Например: P3Y6M4DT12H30M5S (3 года, 6 месяцев, 4 дня, 12 часов, 30 минут, 5 секунд). Если какой-то компонент отсутствует, его можно опустить (например, P1Y — один год).
- Начало и продолжительность — через косую черту: 2025-04-03T14:00:00Z/P1D (начало 3 апреля 2025 года 14:00, продолжительность 1 день).
Применение
Стандарт ISO 8601 широко используется:
- В программировании и базах данных: языки программирования (Java, Python, C#), СУБД (PostgreSQL, MySQL), файлы форматов XML, JSON, CSV и YAML поддерживают ISO 8601. Протокол передачи данных HTTP использует этот стандарт для заголовков даты (например, Date, Last-Modified).
- В документах и отчётах: международные организации, научные журналы, стандарты документооборота (например, ODF).
- В логистике и транспорте: билеты на поезда и самолёты, расписания, почтовые службы.
- В науке: метеорология, астрономия, биология.
- В системах управления версиями: Git, Subversion.
В России стандарт применяется в государственных информационных системах, налоговых документах и при обмене данными между ведомствами.
Примеры
| Описание | Формат ISO 8601 |
|---|---|
| 3 апреля 2025 года | 2025-04-03 |
| 3 апреля 2025 года, 14:30:05 по Москве | 2025-04-03T14:30:05+03:00 |
| 3 апреля 2025 года, 14:30:05 по UTC | 2025-04-03T14:30:05Z |
| 93-й день 2025 года | 2025-093 |
| Четверг 14-й недели 2025 года | 2025-W14-4 |
| Продолжительность 1 год, 2 месяца | P1Y2M |
| Интервал с 3 по 5 апреля 2025 года | 2025-04-03/2025-04-05 |
| Интервал с 3 апреля 2025 года 14:00 на 10 часов | 2025-04-03T14:00:00/PT10H |
Критика и ограничения
Несмотря на широкое распространение, стандарт имеет ряд недостатков:
- Несоответствие историческим календарям: ISO 8601 основан на григорианском календаре, что делает его непригодным для дат до его введения (например, для исторических событий в римской или древнегреческой истории).
- Сложность для человека: форматы, особенно с дробными секундами и смещениями, могут быть трудны для чтения непрофессионалами.
- Смещение временных зон: при отсутствии смещения подразумевается местное время, что часто приводит к ошибкам в международных проектах.
- Неоднозначность недельной даты: нумерация недель отличается от американской системы (где неделя начинается с воскресенья), что может вызывать путаницу.
- Дробные секунды: стандарт допускает как запятую, так и точку в качестве разделителя, что вызывает несовместимость с некоторыми программными реализациями.
Альтернативы
В отдельных областях применяются другие форматы:
- RFC 3339 (Internet Date/Time Format) — урезанная версия ISO 8601, используемая в интернет-протоколах (например, в RSS, Atom, HTTP).
- Unix timestamp — количество секунд с 1 января 1970 года по UTC (не зависит от календаря, но неудобно для отображения).
- Национальные стандарты — например, в США распространён формат MM/DD/YYYY, в России — DD.MM.YYYY.
Интересные факты
- Стандарт ISO 8601 полностью совместим с форматом дат, используемым в Международной системе единиц (SI), но SI рекомендует запись времени в 24-часовом формате без разделителей.
- Несмотря на рекомендации, многие веб-сайты и приложения используют формат с точкой вместо запятой для дробных секунд (например, 14:30:05.75 вместо 14:30:05,75), что нарушает ISO, но соответствует RFC 3339.
- В 2019 году в стандарт были добавлены расширения для повторяющихся интервалов (например, «каждый год 1 января» — R/P1Y/—01-01).
Источники
- ISO 8601-1:2019 — Data elements and interchange formats — Information interchange — Part 1: Date and time
- ISO 8601-2:2019 — Data elements and interchange formats — Information interchange — Part 2: Extensions
- ГОСТ Р ИСО 8601-2006 — Дата и время. Представление дат и времени в цифровом формате
- RFC 3339 — Date and Time on the Internet: Timestamps
- «ISO 8601: The Standard for Date and Time Formats» — Международная организация по стандартизации (ISO)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →