ISO 8601 時間段(Duration)轉換工具
將ISO 8601時間段表示法(如PT1H30M)與秒數相互轉換。可用於解析YouTube API、AWS超時設定、播客RSS訂閱源等場景中使用的時間段格式,適合開發者使用。
ISO 8601 時間段表示法常見示例
ISO 8601時間段以"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天的近似值換算) |
使用提示
- 包含年、月的時間段實際上沒有固定的秒數,因此本工具採用固定近似值:1年=365.25天,1個月=30.44天。
- 將秒數轉換為時間段字串時,選擇"僅使用日/時/分/秒"模式可以完全避免年月近似值,得到不受閏年影響的精確結果。
- YouTube Data API返回的影片時長欄位(contentDetails.duration)採用ISO 8601格式,可直接貼上到本工具中轉換為秒數。
- AWS Lambda、API Gateway等雲服務的超時設定有時會使用ISO 8601時間段表示法,本工具便於校驗這些配置值。
- 播客的RSS訂閱源除了常見的hh:mm:ss格式外,itunes:duration標籤有時也會使用ISO 8601時間段格式。
常見問題
閒話 ― 計算機世界為何需要專門的"時間段"格式
ISO 8601以統一表示日期和時間的國際標準而廣為人知,但同一標準中其實也定義了"時間段(Duration)"的表示法——即兩個時間點之間的長度,而非某個具體的時間點。日期時間回答的是"何時",而時間段回答的是"多久",兩者看似相似,實則代表著性質完全不同的資訊。正是為了明確區分這一點,才有了以"P"開頭的專用記法。
時間段表示法在實踐中備受青睞的原因之一,是它能夠防止系統間資料交換時因單位理解不一致而產生的錯誤。例如,如果API響應只返回數字"30",呼叫方就必須查閱文件才能確定這是秒還是分鐘。而使用"PT30S"時,數值與單位被打包在同一個字串中,只要解析實現正確,就不可能產生誤解。
YouTube Data API之所以用ISO 8601格式返回影片時長,原因也在於此:"PT4M13S"這樣的字串能明確無誤地表示一段4分13秒的影片。AWS、Google Cloud等雲平臺的超時與有效期設定有時也採用相同的格式,如果在YAML配置檔案或JSON響應中看到這種記法,用本工具換算成秒數會更容易理解其實際含義。
與此同時,這一標準也有一個有趣的特性:包含年、月的時間段並不具有固定的絕對長度。同樣是"P1Y",是否跨越閏年會導致實際天數在365天與366天之間變化。歸根結底,本工具在涉及年、月的換算時不得不採用近似值,原因正在於此。