Час/числа
Парсер тривалості ISO 8601
Розібрати рядок на кшталт "P3Y6M4DT12H30M5S" у зрозумілий вигляд або скласти такий рядок із років/місяців/днів/годин/хвилин/секунд.
Порожнє поле = 0, нульові поля не потрапляють у рядок. Компонент тижнів (P4W) підтримується лише при розборі — для складання вкажіть дні.
Тривалість у форматі ISO 8601 (наприклад, P3Y6M4DT12H30M5S) — компактний, однозначний спосіб записати проміжок часу, який використовують багато API та форматів даних, але який складно прочитати без розбору. Інструмент перекладає такий рядок людською мовою й дозволяє скласти його з готових полів.
Як користуватися
- Розбір: вставте ISO-рядок тривалості — отримаєте роки, місяці, дні, години, хвилини й секунди окремо, у зрозумілому вигляді.
- Складання: вкажіть потрібні компоненти тривалості — інструмент збере коректний ISO 8601 рядок.
- Літера T перед часовою частиною (години/хвилини/секунди) обов’язкова й додається автоматично, коли потрібно.
Типові сценарії
- Читання поля тривалості з відповіді API (підписки, оренди, таймауту), поданого в цьому форматі.
- Формування коректного ISO 8601 рядка для запиту, що очікує саме такий формат тривалості.
- Перевірка, чому парсер стороннього API відхиляє складену вручну тривалість, — звірка з точним синтаксисом стандарту.
Що варто памʼятати
Літера P на початку означає «period» (період) і є обовʼязковою, так само як T перед часовою частиною, що відділяє дні від годин.
Базовий стандарт не визначає знак для тривалості — від’ємні тривалості (для позначення «тому назад») підтримуються лише окремими реалізаціями як неофіційне розширення.
Стаття про цей інструмент: ISO 8601 Duration: як записати тривалість у стандартному форматі
Часті запитання
Що означає рядок на кшталт P3Y6M4DT12H30M5S?
Це стандартний формат ISO 8601 для тривалості: P означає "period", далі йдуть роки/місяці/дні до літери T, після якої — години/хвилини/секунди. У прикладі це 3 роки, 6 місяців, 4 дні, 12 годин, 30 хвилин і 5 секунд.
Чим ISO-тривалість відрізняється від простої тривалості в годинах?
На відміну від фіксованих одиниць (як у калькуляторі тривалості), компоненти "роки" й "місяці" тут календарні й не мають сталої кількості секунд — їх точна довжина залежить від конкретних дат застосування.
Чи підтримується тижневий формат P4W?
Так, але лише під час розбору готового рядка. Для складання власного рядка тижні потрібно виразити в днях, оскільки ISO 8601 не дозволяє поєднувати тижні з іншими компонентами в одному рядку.
Чи можна вказати дробові секунди чи хвилини?
Так, стандарт дозволяє дробову частину лише в останньому компоненті рядка — наприклад, PT1.5S (1.5 секунди) або PT1H30.5M (1 година 30.5 хвилини) є коректними, а дробова частина в будь-якому нефінальному компоненті — ні.
Чи бувають від'ємні ISO-тривалості?
Базовий стандарт ISO 8601 не визначає знак для тривалості, але деякі реалізації (зокрема в цьому інструменті) підтримують провідний мінус для позначення "тому назад" чи зворотної тривалості — це поширене, хоч і неофіційне розширення.