首页 > 解决方案 > 是否有表示持续时间、时间跨度或时间增量的标准方法?

问题描述

如果我们接受有各种标准方式来表示时间和日期,那么是否有一种标准方式来表示时间跨度或时间增量?我会添加一个要求,即时间跨度的表示也应该易于解析。

例如 Days/HH:MM:SS.FFFFFF (例如 3/14:12:04.201000 )是否可以接受?HH:小时,MM:分钟,SS:秒,FFFFFFF 秒。

标签: text-formatting

解决方案


ISO 8601 定义了表单的持续时间

P...Y...M...DT...H...M...S

...数字在哪里?

  • P(句点)将字符串标记为持续时间
  • Y年
  • M月
  • D天
  • T(时间)解决了月份和分钟之间的歧义
  • 小时
  • M分钟
  • S 秒

只要至少有一个组件(例如PT5S表示 5 秒),就可以省略值为 0 的组件。最不重要的部分可以有一个小数值(例如PT0.5H表示半小时 = 30 分钟)。

但是,ISO 8601 定义了这些持续时间以指定形式的时间间隔start_date_time + duration。根据开始日期和时间,每个组件的长度S可能会有所不同。

  • 闰年可以有 365 或 366 天。
  • 月份可以有 28 到 31 天。
  • 更改夏令时时,天可以有 23 到 25 小时。
  • 对于闰秒,分钟可以有 60 或 61 秒。

另请参阅ISO 8601 持续时间“P1M”的值是多少(以秒为单位)?. ISO 8601 提到某些应用程序可能会修复P1M=P30D等持续时间,但根本没有定义它。

要解决这些解释问题,您可以只使用秒,例如,PT3600S而不是PT1H(标准不强制执行结转点,如 60 秒、24 小时等)。然而,这似乎毫无意义。PT我宁愿只使用没有和(unix-time 风格)的秒数,S或者像你建议的那样切换到非标准化(?)但丰富的格式(视频时间戳)。


推荐阅读