【问题标题】:Is there a standard way to represent a time duration, time-span or time-delta?是否有表示持续时间、时间跨度或时间增量的标准方法?
【发布时间】:2021-09-21 13:26:14
【问题描述】:

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

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

【问题讨论】:

    标签: text-formatting


    【解决方案1】:

    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 等结转点)。然而,这似乎毫无意义。我宁愿只使用没有PTS(unix-time 风格)的秒数,或者像你建议的那样切换到非标准化(?)但丰富的格式(视频时间戳)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 2019-02-17
      • 1970-01-01
      • 2012-10-07
      • 2023-01-20
      相关资源
      最近更新 更多