是否有一种标准方法来表示持续时间、时间跨度或时间增量?
Is there a standard way to represent a time duration, time-span or time-delta?
如果我们接受有多种标准方式来表示时间和日期,那么是否有一种标准方式来表示时间跨度或时间增量?我要添加的要求是时间跨度的表示也应该易于解析。
例如 Days/HH:MM:SS.FFFFFF(例如 3/14:12:04.201000)是否可以接受?
使用 HH:小时,MM:分钟,SS:秒,FFFFFFF 秒的小数部分。
ISO 8601 定义了持续时间 的形式
P...Y...M...DT...H...M...S
其中 ...
是数字,
- P(句点)将字符串标记为持续时间
- Y年
- M个月
- D天
- T(时间)解决月和分钟之间的歧义
- 小时
- M分钟
- S秒
只要至少有一个组件,就可以省略值为 0 的组件(例如 PT5S
表示 5 秒)。最不重要的部分可以有一个小数值(例如 PT0.5H
表示半小时 = 30 分钟)。
但是,ISO 8601 定义了这些持续时间以指定 start_date_time + duration
形式的时间间隔。根据开始日期和时间,除 S
之外的每个组件的长度可能会有所不同。
- 闰年可以有 365 天或 366 天。
- 一个月可以有 28 到 31 天。
- 更改夏令时时,一天可以有 23 到 25 个小时。
- 分钟可以有 60 秒或 61 秒的闰秒。
另见 What is the value of the ISO 8601 duration `P1M` (in seconds)?。 ISO 8601 提到 一些 应用程序 可能 修复像 P1M
= P30D
等持续时间,但没有 完全定义它。
要解决这些解释问题,您可以只使用秒,例如PT3600S
而不是 PT1H
(标准确实 而不是 强制结转点,如 60s、24h 等)。然而,这似乎毫无意义。我宁愿只使用没有 PT
和 S
(unix 时间样式)的秒数,或者切换到非标准化(?)但像您建议的那样丰富的格式(视频时间戳)。
如果我们接受有多种标准方式来表示时间和日期,那么是否有一种标准方式来表示时间跨度或时间增量?我要添加的要求是时间跨度的表示也应该易于解析。
例如 Days/HH:MM:SS.FFFFFF(例如 3/14:12:04.201000)是否可以接受? 使用 HH:小时,MM:分钟,SS:秒,FFFFFFF 秒的小数部分。
ISO 8601 定义了持续时间 的形式
P...Y...M...DT...H...M...S
其中 ...
是数字,
- P(句点)将字符串标记为持续时间
- Y年
- M个月
- D天
- T(时间)解决月和分钟之间的歧义
- 小时
- M分钟
- S秒
只要至少有一个组件,就可以省略值为 0 的组件(例如 PT5S
表示 5 秒)。最不重要的部分可以有一个小数值(例如 PT0.5H
表示半小时 = 30 分钟)。
但是,ISO 8601 定义了这些持续时间以指定 start_date_time + duration
形式的时间间隔。根据开始日期和时间,除 S
之外的每个组件的长度可能会有所不同。
- 闰年可以有 365 天或 366 天。
- 一个月可以有 28 到 31 天。
- 更改夏令时时,一天可以有 23 到 25 个小时。
- 分钟可以有 60 秒或 61 秒的闰秒。
另见 What is the value of the ISO 8601 duration `P1M` (in seconds)?。 ISO 8601 提到 一些 应用程序 可能 修复像 P1M
= P30D
等持续时间,但没有 完全定义它。
要解决这些解释问题,您可以只使用秒,例如PT3600S
而不是 PT1H
(标准确实 而不是 强制结转点,如 60s、24h 等)。然而,这似乎毫无意义。我宁愿只使用没有 PT
和 S
(unix 时间样式)的秒数,或者切换到非标准化(?)但像您建议的那样丰富的格式(视频时间戳)。