Стандарт ISO 8601 визначає не лише формат дат, а й формат запису тривалостей часу — рядок на кшталt PT1H30M, який однозначно й машинозчитувано описує "1 годину 30 хвилин".
Структура формату
Запис завжди починається з літери P (period). Компоненти дат (роки, місяці, дні) йдуть одразу після P, а компоненти часу (години, хвилини, секунди) — після літери T, яка відокремлює дату від часу. Наприклад, P1Y2M10DT2H30M означає "1 рік, 2 місяці, 10 днів, 2 години, 30 хвилин".
Чому потрібна літера T
Без роздільника T літера M була б неоднозначною — вона позначає і місяці (у частині дати), і хвилини (у частині часу). Тому P1M означає "1 місяць", а PT1M — "1 хвилина".
Де використовується цей формат
ISO 8601 duration широко застосовується в API (наприклад, для тривалості відео чи аудіо в YouTube Data API), у форматах календарів (iCalendar), і всюди, де потрібен однозначний, незалежний від мови й культури запис тривалості.
Навіщо це потрібно
- Розшифрувати тривалість відео чи події з відповіді стороннього API.
- Сформувати коректний ISO 8601 duration рядок для власного API чи фіда даних.
- Конвертувати тривалість між людинозрозумілим форматом і машинним ISO-записом.
Дробові секунди в записі
Стандарт ISO 8601 дозволяє дробову частину лише в останньому (наймолодшому) компоненті рядка — наприклад, PT1.5S означає "1.5 секунди", а PT1H30.5M — "1 година 30.5 хвилини". Дробова частина в будь-якому іншому компоненті, крім останнього, стандартом не передбачена.