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天的近似值换算)

ISO 8601 时间段(Duration)表示法是什么

ISO 8601时间段表示法是一种用单个字符串(如"P3Y6M4DT12H30M5S")表示两个时间点之间"长度"的国际标准。日期时间回答的是"什么时候",而时间段回答的是"多长",两者性质不同,因此规范中专门定义了以"P"开头的独立记法。

YouTube Data API返回的视频时长、AWS和Google Cloud等云服务的超时与有效期设置、播客RSS订阅源的音频长度,都会用到这种表示法。本工具可以让时间段字符串与秒数即时互相转换,帮助你快速确认某个值到底代表多长时间。

ISO 8601 时间段与秒数的转换步骤

  1. 将时间段字符串粘贴到输入框以转换为秒数 在上方文本框中输入"PT1H30M"这样的ISO 8601时间段字符串,会自动显示总秒数和各单位的明细。
  2. 尝试示例 点击"插入示例"按钮,会填入包含年月日时分秒的复合表示法示例,方便立即查看效果。
  3. 输入秒数以转换为时间段字符串 在下方文本框中输入想要转换的总秒数,即可生成对应的ISO 8601时间段字符串。
  4. 选择转换模式 选择"使用年/月/日"可得到便于阅读的表示法,选择"仅使用日/时/分/秒"则不使用年月近似值,得到精确结果。
  5. 查看并复制结果 将显示的总秒数、分钟数、小时数、天数,或生成的时间段字符串直接复制到API请求或配置文件中使用。

用好本工具的小技巧

  • 包含年、月的时间段实际上没有固定的秒数,因此本工具采用固定近似值: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 时间段转换的应用场景

解析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)
表示两个时间点之间长度的值。与指向某一具体时刻的"日期时间"不同,时间段承载的是"经过了多长时间"这一差值信息。
PnYnMnDTnHnMnS 记法
ISO 8601时间段表示法的基本格式。"P"后接年(Y)、月(M)、日(D),"T"后接时(H)、分(M)、秒(S),只列出需要的单位。
时间戳
表示某一具体时间点的值。与表示差值的时间段不同,时间戳表达的是"何时"这一绝对位置。
RFC 3339
基于ISO 8601、规定互联网上日期时间表示法的规范。它定义了时间戳表示法,但不包含时间段(Duration)表示法,后者是ISO 8601独有的规定。
周表示法(PnW)
如"P2W"这样仅用周数表示时间段的简写记法。根据ISO 8601规范,它是无法与年月日或时刻部分组合使用的独立表示法。

常见问题

PT1H30M是ISO 8601时间段表示法,表示"1小时30分钟"。"P"标志着时间段的开始,"T"标志着时刻部分(时、分、秒)的开始——这一点很重要,因为没有"T"时"1M"表示"1个月",而"T"之后的"1M"则表示"1分钟"。

典型例子包括YouTube Data API的视频时长字段(contentDetails.duration)、AWS和Google Cloud等云服务的超时与有效期设置、以及播客RSS订阅源(itunes:duration)。许多编程语言也支持解析和生成该格式,例如Java的Duration/Period类、Python的isodate库等。

一年可能是365天或366天(取决于是否为闰年),一个月的天数也在28天到31天之间变化,因此两者都不存在固定的秒数。本工具将365.25天作为一年的实用平均近似值(其十二分之一,约30.44天,作为一个月)。如果需要精确结果,建议使用"精确值"模式,仅用天、时、分、秒来表示时间段。

是的,本工具支持"P2W"(2周)这样的W表示法。但需要注意,根据ISO 8601规范,W表示法是一种独立的简写形式,不能与年月日或时刻部分组合使用。

如果输入不以"P"开头、单位顺序不符合年→月→日、"T"之后时→分→秒的规则,或者所有单位都被省略(空时间段),本工具会判定为无法转换,并显示错误提示而非结果。
工具君

闲话 ― 计算机世界为何需要专门的"时间段"格式

ISO 8601以统一表示日期和时间的国际标准而广为人知,但同一标准中其实也定义了"时间段(Duration)"的表示法——即两个时间点之间的长度,而非某个具体的时间点。日期时间回答的是"何时",而时间段回答的是"多久",两者看似相似,实则代表着性质完全不同的信息。正是为了明确区分这一点,才有了以"P"开头的专用记法。

时间段表示法在实践中备受青睐的原因之一,是它能够防止系统间数据交换时因单位理解不一致而产生的错误。例如,如果API响应只返回数字"30",调用方就必须查阅文档才能确定这是秒还是分钟。而使用"PT30S"时,数值与单位被打包在同一个字符串中,只要解析实现正确,就不可能产生误解。

YouTube Data API之所以用ISO 8601格式返回视频时长,原因也在于此:"PT4M13S"这样的字符串能明确无误地表示一段4分13秒的视频。AWS、Google Cloud等云平台的超时与有效期设置有时也采用相同的格式,如果在YAML配置文件或JSON响应中看到这种记法,用本工具换算成秒数会更容易理解其实际含义。

与此同时,这一标准也有一个有趣的特性:包含年、月的时间段并不具有固定的绝对长度。同样是"P1Y",是否跨越闰年会导致实际天数在365天与366天之间变化。归根结底,本工具在涉及年、月的换算时不得不采用近似值,原因正在于此。