SheepDev

日時・スケジュール

PT90Mは何時間?P1MとPT1Mは違う?

使うツール

動画の長さ、タイムアウト、予定の期間がPやTを含む文字列で返ってくると、日時のようにも見えます。しかしPT90Mは何月何日の時刻ではなく、期間を表す値です。期間表記変換で秒数と構成要素を見比べると、文字の位置が意味を変えることや、秒へ一意に直せない期間があることを確認できます。開始日時を持たない値に、勝手なカレンダーやタイムゾーンを補わないことが大切です。

PT90Mを、秒と時間で読み直す

最初の期間入力
PT90M

期間表記変換へ入力すると、分の構成要素が90、合計秒数が5400と確認できます。90×60なので5400秒、時間で考えると1時間30分です。表示されるISO表記がPT90Mのままでも、変換に失敗したわけではありません。このツールは必ずPT1H30Mという最短の見た目へ整えるものではなく、期間の構成と秒数を確認するものです。

次に5400という数値だけを入力してみます。この画面では数値入力を秒として扱うので、同じ長さを表します。一方、90とだけ入力すると90分ではなく90秒です。入力欄の単位を省いて数字だけをコピーすると、別の画面で60倍の差を作ることがあります。結果を共有するときも、5400秒なのか90分なのか、入力に使った表記と単位を添えます。

P1MとPT1Mは、T一文字で意味が変わる

一つずつ試す二つの表記
P1M
PT1M

P1Mは一か月、PT1Mは一分です。二行をまとめてではなく、一つずつ入力して構成要素を見ます。PT1Mでは60秒が出ますが、P1Mでは固定の合計秒数を出しません。月によって日数が違い、開始日も指定されていないためです。Mを見つけたらすべて分へ置換するような文字列処理では、期間の意味を変えてしまいます。

年を含むP1Yも、常に365日分の秒へ変えるものではありません。APIの説明で『一か月』と『30日』が同じ意味として定義されているなら、そのサービス固有の契約を明示して扱います。そうした定義がない値を、見やすい数字にするためだけに固定日数へ置き換えないでください。算出しない結果は不便さではなく、足りない条件を示している場合があります。

ここでの一日と、時計の一日を分ける

日と時間を含む例
P1DT2H

このツールでは、月と年を含まない期間をタイムゾーンのない基準日で合計します。P1DT2Hは24時間と2時間で93600秒です。これは『ある地域で今日から明日の同時刻までが必ず86400秒』という保証ではありません。夏時間の切替などが関わる実際の時点の差を知りたい場合は、開始と終了の時刻・オフセットを指定して日時差計算を使います。

予定表の『二日間』、処理時間の『48時間』、日付を二つ進める操作は、目的が違います。表示が同じ数字でも、祝日を除く営業日、暦上の日付、経過秒数を混ぜると、締め切りがずれます。期間表記変換だけでは休日を判定したり、業務の締め時刻を決めたりしません。結果の数値を使う前に、どの種類の時間を扱っているかを一言で説明できるようにします。

小数秒は、ISO表記で指定して確認する

半秒を含む期間
PT1.5S

PT1.5Sを入力すると、合計は1.5秒です。ここで結果の構成要素に秒が1と出ていても、残りの0.5秒が消えたとは判断しません。現在の構成要素一覧は年から秒までを表示し、小数部分はISO表記と合計秒数で確認する必要があります。表示の一部分だけを取り出して計算し直すより、目的に合った結果欄を使うことが重要です。

『01:30』という表記は、この画面で時分と推測して受け付ける形式ではありません。90秒のつもりなら90、90分ならPT90Mのように明示します。また数値だけの小数秒入力と、ISO形式の小数秒入力で対応が異なるため、小数秒はPT1.5SのようなISO形式を使います。別のシステムへ渡す場合も、相手が許可する期間の構文を確かめてください。

期間のラベルを、日時や期限へ読み替えない

APIからPT30Mが返ってきても、それだけでは期限が何時かは分かりません。発行時刻から30分なのか、最後の操作から30分なのか、ある処理の所要時間なのかは別の項目で決まります。期限を求めるなら、期間だけでなく基準時刻も確認します。結果が1800秒であることと、利用者があと1800秒操作できることを同じ意味で表示しないでください。

確認用の例には、PT90M、PT1M、P1M、P1DT2H、PT1.5Sを残しておくと、単位の位置、暦の条件、小数部分をそれぞれ確かめられます。受け取り側が秒数だけを要求するなら、月や年を含む入力をどう扱うかを仕様として決めます。単純な変換式を増やして無理に数字へするより、足りない条件をエラーや未確定として残す方が、誤った期限計算を防げます。

参考資料

使うツール

使い方・解説 →