ISO 8601標準は日付フォーマットだけでなく、時間の長さを書くフォーマットも定義しています——PT1H30Mのような文字列は、「1時間30分」を明確かつ機械可読な形で表現します。
フォーマットの構造
文字列は常に文字P(period)で始まります。日付コンポーネント(年、月、日)はPの直後に続き、時間コンポーネント(時、分、秒)は日付部分と時間部分を区切る文字Tの後に続きます。例えば、P2DT4Hは「2日と4時間」を意味します。
なぜ文字Tが必要か
区切り文字Tがなければ、文字Mは曖昧になります——月(日付部分)と分(時間部分)の両方を表すからです。そのためP1Mは「1ヶ月」を意味し、PT1Mは「1分」を意味します。
YouTube Data APIでの実例
YouTube Data APIのvideos.listエンドポイントは、動画の長さをcontentDetails.durationフィールドにISO 8601 duration形式の文字列として返します。例えば「4分13秒」の動画はPT4M13Sという値になり、動画サイトや分析ツールを自作する開発者はこの文字列を人間が読める時間表示に変換する処理を必ず一度は書くことになります。
なぜこれが必要か
- サードパーティAPIのレスポンスから動画やイベントの長さを読み解く。
- 自分のAPIやデータフィード用の有効なISO 8601 duration文字列を生成する。
- 人間が読める形式と機械が読めるISO表記の間で時間の長さを変換する。
表記における小数秒
ISO 8601標準は、文字列の最後(最も小さい)のコンポーネントにのみ小数部分を許可しています——例えば、PT1.5Sは「1.5秒」を意味し、PT1H30.5Mは「1時間30.5分」を意味します。最後以外のコンポーネントに小数部分を付けることは標準では想定されていません。