ISO 8601 期間(Duration)変換ツール
ISO 8601の期間表記(例: PT1H30M)と秒数を相互変換します。YouTube APIの動画長やAWSのタイムアウト設定、ポッドキャストのRSSフィードなどでも使われるこの期間形式を、素早く解読・生成できる開発者向けの無料ツールです。
ISO 8601 期間表記の代表例
ISO 8601の期間(Duration)表記は「P」に続けて年・月・日を、「T」に続けて時・分・秒を並べる形式です。以下は代表的な表記とそれが表す秒数の対応表です。
| 期間表記 | 合計秒数 | 備考 |
|---|---|---|
| PT30S | 30 | 30秒間のタイムアウトなど、短い時間指定の代表例 |
| PT1H30M | 5,400 | 1時間30分。映画の上映時間やYouTube動画の長さを表す際によく使われる形式 |
| P1D | 86,400 | 1日(24時間)。サーバーログの保持期間やキャッシュの有効期限指定に使われる |
| P3Y6M4DT12H30M5S | 110,842,205 | 3年6ヶ月4日12時間30分5秒に相当する複合表記の例(年・月は365.25日/年の近似値で換算) |
ISO 8601 期間(Duration)表記とは
ISO 8601 期間(Duration)表記は、2つの時点の間の「長さ」を"P3Y6M4DT12H30M5S"のような1つの文字列で表す国際規格です。日時が「いつなのか」という1点を指すのに対し、期間は「どれだけの長さか」という差分を表すため、タイムスタンプとは別の専用フォーマットが定義されています。
YouTube Data APIの動画の長さ、AWSやGoogle CloudのAPIにおけるタイムアウト・有効期限の設定、ポッドキャストRSSフィードの音声長など、開発者が扱うAPIレスポンスや設定ファイルの随所にこの表記が登場します。本ツールは期間文字列と秒数を相互に変換し、実際にどれだけの長さなのかを即座に確認できます。
ISO 8601 期間文字列と秒数の変換手順
- 期間文字列を秒数に変換する場合は入力欄に貼り付ける "PT1H30M"のようなISO 8601期間文字列を上段のテキストボックスに入力すると、自動的に合計秒数と単位ごとの内訳が表示されます。
- サンプルを試す 「サンプルを入力」ボタンを押すと、年月日時分秒をすべて含む複合表記の例が入力され、動作をすぐに確認できます。
- 秒数を期間文字列に変換する場合は下段に数値を入力する 変換したい合計秒数を下段のテキストボックスに入力すると、対応するISO 8601期間文字列が生成されます。
- 変換モードを選ぶ 「年月日を使う」を選ぶと年・月を含む読みやすい表記に、「日時分秒のみ」を選ぶと年月の近似を使わない厳密な表記になります。
- 結果を確認・コピーする 表示された合計秒数・分数・時間数・日数、または生成された期間文字列を、そのままAPIリクエストや設定ファイルに転記できます。
使いこなすためのヒント
- 年・月を含む期間は、実際には暦によって日数が変動するため、本ツールでは1年=365.25日、1ヶ月=30.44日という固定の近似値で秒数に換算しています。
- 秒数から期間文字列を生成する際、「日時分秒のみ」モードを選ぶと年・月の近似を一切使わず、うるう年等の誤差がない厳密な表記が得られます。
- YouTube Data APIの動画情報(contentDetails.duration)はISO 8601形式で返されるため、本ツールにそのまま貼り付けて秒数に変換できます。
- AWS Lambda・API Gatewayなどクラウドサービスのタイムアウト設定にISO 8601期間表記が使われる場合があり、設定値の検証に便利です。
- ポッドキャストのRSSフィードで音声の長さを表す際、hh:mm:ss形式に加えてISO 8601期間形式が使われることがあります。
ISO 8601 期間変換の活用シーン
YouTube Data APIのレスポンス解析
contentDetails.durationで返される"PT4M13S"のような値を貼り付けて、動画が何分何秒かを即座に確認できます。
AWS・クラウドサービスの設定値デバッグ
Step FunctionsやCloudFormationのタイムアウト設定に書かれた期間表記が何秒・何時間に相当するかを検証できます。
ポッドキャストRSSフィードの音声長確認
itunes:durationタグにISO 8601形式が使われている場合、hh:mm:ss表記と比較しながら長さを把握できます。
カレンダー・スケジューリングAPIとの連携
Googleカレンダー等のAPIが要求する繰り返し間隔やリマインダー時間の期間表記を、秒数から逆算して組み立てられます。
開発中のユニットテストの期待値作成
期間パーサーを自作する際、既知の期間文字列に対する正しい秒数を検算してテストケースの期待値に使えます。
ISO 8601 期間表記の用語集
- ISO 8601
- 日付・時刻・期間の表記方法を定めた国際標準規格です。"2026-09-16"のような日付表記のほか、本ツールが扱う期間(Duration)表記もこの規格の一部です。
- 期間(Duration)
- 2つの時点の間の長さを表す値です。特定の1点を指す「日時」とは異なり、「どれだけの時間が経過するか」という差分の情報を持ちます。
- PnYnMnDTnHnMnS 記法
- ISO 8601期間表記の基本形式です。"P"の後に年(Y)・月(M)・日(D)、"T"の後に時(H)・分(M)・秒(S)を必要な単位だけ並べます。
- タイムスタンプ
- 特定の1つの時点を示す値です。期間(差分)とは異なり、「いつなのか」という絶対的な位置を表します。
- RFC 3339
- ISO 8601を基にインターネット上での日時表記を定めた規格です。日時(タイムスタンプ)の表記は定義していますが、期間(Duration)表記はISO 8601独自の仕様であり、RFC 3339には含まれません。
- 週表記(PnW)
- "P2W"のように週数のみで期間を表す省略記法です。ISO 8601の仕様上、年月日や時刻部分とは組み合わせられない単独表記として定義されています。
よくある質問
余談ですが ― なぜコンピューターの世界に「期間」を表す専用フォーマットがあるのか
ISO 8601は本来「日時」を国際的に統一したフォーマットで表すための規格として知られていますが、実は「期間(Duration)」、つまり2つの時点の間の長さを表す記法も同じ規格の中で定義されています。日時が「いつなのか」という1点を指すのに対し、期間は「どれだけの長さか」という差分の情報であり、両者は似ているようで扱うべき情報の性質がまったく異なります。この違いを明確にするために、期間専用の"P"から始まる記法が用意されました。
期間表記が実務で重宝される理由の1つは、プログラム間でデータをやり取りする際に、単位の解釈違いによるバグを防げる点にあります。例えば「30」という数値だけをAPIレスポンスに含めた場合、それが秒なのか分なのかは呼び出し側が別途ドキュメントを確認しない限り分かりません。一方"PT30S"であれば、値と単位が1つの文字列にセットで含まれているため、パースする側の実装が正しければ解釈を誤りようがありません。
YouTube Data APIが動画の長さをISO 8601形式で返すのも同じ理由です。"PT4M13S"という文字列を見れば、それが4分13秒の動画であることが一意に定まります。同様にAWSやGoogle CloudのAPIでもタイムアウトや有効期限の設定にこの形式が採用されることがあり、クラウドサービスのYAML設定ファイルやJSONレスポンスの中でこの記法を見かけたら、本ツールで秒数に変換して具体的な長さを確認するとイメージが掴みやすくなります。
一方でこの規格には、年・月を含む期間が「絶対的な長さ」を持たないという興味深い性質があります。同じ"P1Y"でも、うるう年をまたぐかどうかで実際の日数が365日にも366日にもなり得るのです。本ツールが年月を含む変換に近似値を使わざるを得ないのも、突き詰めればこの仕様上の曖昧さに起因しています。