search

Found

info 概要

PnYnMnDTnHnMnS や PnW 形式の ISO 8601 期間文字列を秒・ミリ秒・分・時間へ換算し、各要素 (年/月/日/時/分/秒) の内訳と人間可読表現を同時に出力するパーサーに対応。

📘 使い方

  1. 期間文字列 (例 P1Y6M14DT12H30M45S) を入力欄に入力する
  2. 1 年の日数 (365 / 365.25 / 366) を切り替える
  3. 合計秒・分・時間と各要素の内訳を確認する

ISO 8601 期間パーサー

形式: PnYnMnDTnHnMnS または PnW (n は数値、小数可)

※ P が期間プレフィックス。T 以降が時刻部 (H/M/S)。週形式 PnW は単独で使い、他の指定子と混在不可。

※ 1 年と 1 ヶ月は基準日数で近似換算 (1 ヶ月 = 1 年 ÷ 12)。厳密なカレンダー差分には日付ベースの計算が必要。

合計 秒
s
合計 ミリ秒
ms
合計 分
min
合計 時間
h

成分の内訳

Y
0
M
0
D
0
H
0
M
0
S
0

人間可読

コピーしました!
Article

ISO 8601 期間パーサー|PnYnMnDTnHnMnS を秒・分・時間へ換算

P1Y6M14DT12H30M45SPT1H30M、週形式 P1W といった ISO 8601 の期間文字列を、合計秒・ミリ秒・分・時間へ一度に換算するパーサー。年/月/日/時/分/秒の各要素を分解し、人間が読める表現も同時に並べる。

💡 このツールについて

cron や Kubernetes の liveness probe、OpenAPI の format: duration、RFC3339 系の API を触っていると、PT30MP3DT4H のような文字列が突然出てくる。読み方は分かっても「これ結局何秒なんだ?」を暗算するのは地味に面倒で、Y/M/D の単位境界を間違えると桁がずれる。

このパーサーは文字列をそのまま貼り付けるだけで、合計秒数とミリ秒、分、時間を 4 枚のカードに同時表示する。さらに YMDHMS の 6 成分に分解し、P の直後が日付部、T の後ろが時刻部という ISO 8601 の構造をそのまま目で追える。年・月をまたぐ期間は「1 年 = 365 / 365.25 / 366 日」を切り替えて近似換算できるので、うるう年込みの概算と平年ベースの概算を即座に見比べられる。

🧐 よくある質問

Q. P1Y の「1 年」は何秒として計算されますか? 選んだ「1 年の日数」基準で決まる。365 日なら 31,536,000 秒、365.25 日なら 31,557,600 秒。月は「1 年 ÷ 12」で近似する。

Q. なぜ月や年は「近似」なのですか? ISO 8601 の期間は暦に依存しない名目値で、実際の 1 ヶ月は 28〜31 日と幅がある。特定の開始日からの厳密な差分が必要なら、日付計算 (カレンダー演算) を使う必要がある。

Q. P1W のような週形式も使えますか? 使える。P1W は 7 日 = 604,800 秒として換算する。ただし週形式は単独で書く決まりで、P1Y2W のように他の指定子と混在させることはできない。

Q. 小数は入力できますか? できる。PT1.5H (1.5 時間) や PT0.5S のように小数点 (またはカンマ) を含む値も解釈する。

Q. 負の期間 (-PT1H など) は扱えますか? 本ツールでは扱わない。負符号で始まる文字列はエラーになる。

Q. T を付け忘れるとどうなりますか? P1M は「1 ヶ月」、PT1M は「1 分」と区別される。M は日付部では月、時刻部では分を表すため、分を意図するなら必ず T の後ろに書く。

📚 ISO 8601 期間表記の豆知識

ISO 8601 の期間 (duration) は、特定の時点ではなく「長さ」だけを表すために P (Period) で始まる。T は時刻部の区切りで、これが無いと M が月か分か判別できない——P1MPT1M の違いはここから生まれる。

開発現場では、スケジューラのインターバル指定や CI のタイムアウト、動画メタデータ (YouTube Data API の contentDetails.durationPT4M13S 形式) など、地味に登場頻度が高い。「30 分」を PT30M と書くか PT0.5H と書くかは自由だが、機械可読性を優先して整数の最小単位で揃える運用が多い。日本国内の業務システムでも、海外製ミドルウェアの設定値が ISO 8601 期間で渡ってくる場面は増えており、合計秒への換算を一手で済ませられると設定ミスの確認が速い。