ISO 8601 时长转换器
读写 PT1H30M 这类 ISO 8601 时长,同时给出秒数与通俗说法。
ISO 8601 时长转换器完全在你的浏览器中运行:输入的时长在本机解析,不会上传。
打开时长转换器
关于 ISO 8601 时长转换器
ISO 8601 的时长出现在任何需要让一段时间安全穿过 JSON 的地方:schema.org 标记、Kubernetes 清单、XML Schema、OpenAPI 示例,以及 .NET 的 TimeSpan 往返格式。写法是 P[n]Y[n]M[n]DT[n]H[n]M[n]S,而所有人都会栽在 M 上:T 之前表示月,T 之后表示分钟,所以 P1M 与 PT1M 相差约 43,000 倍。这个转换器会拆解时长,也能从普通文字生成时长,并明确说出多数库都藏起来的事实:月和年并没有固定长度。
功能特性
- 解析完整语法,包括周、小数与负号
- 正确区分 T 前后的月与分钟
- 以秒、毫秒、分钟、小时与天给出合计
- 用通俗说法呈现这段时长
- 由秒数、时钟写法或单位后缀生成 ISO 时长
- 可在格里高利平均值与 30/365 天之间切换
如何使用 ISO 8601 时长转换器
- 粘贴一个 ISO 8601 时长,或切换到生成模式
- 生成模式下可输入秒数、时钟写法或 2d 4h 之类的写法
- 读取合计、各字段拆解与通俗说法
- 若含月或年,选择月长度所用的假设
示例
输入
P3Y6M4DT12H30M5S
输出
3 years, 6 months, 4 days, 12 hours, 30 minutes and 5 seconds
110,984,405 seconds (Gregorian average)
规范自带的示例,也提醒着两个 M 含义并不相同。
常见错误与故障排除
- 把 P1M 和 PT1M 当成同一回事。 — 它们不同:T 之前的 M 是月,之后是分钟。漏写 T 是最常见的错误。
- 含月的时长在别处算出不同的秒数。 — 因为月没有固定长度:有的按 30 天,有的按 30.44 天,有的用真实日历。这里会显示所采用的假设。
常见问题
- PT1H30M 是什么意思?
- 一小时三十分钟。P 开启时长,T 分隔日期部分与时间部分,T 之后的 M 表示分钟。
- P1M 与 PT1M 有什么区别?
- P1M 是一个月,PT1M 是一分钟。区分它们的只有 T,所以 T 不能省略。
- 怎样把 ISO 8601 时长换算成秒?
- 周及以下是精确的;月和年不是,必须假定一个长度——可在格里高利平均值与 30 天之间选择。
- ISO 8601 时长用在哪些地方?
- schema.org 标记、Kubernetes 与 Prometheus 配置、XML Schema 类型、OpenAPI 示例,以及 .NET 的 TimeSpan。
相关工具
全部 ArrayKit 工具