text-formatting - 是否有表示持续时间、时间跨度或时间增量的标准方法?
问题描述
如果我们接受有各种标准方式来表示时间和日期,那么是否有一种标准方式来表示时间跨度或时间增量?我会添加一个要求,即时间跨度的表示也应该易于解析。
例如 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 秒
只要至少有一个组件(例如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
或者像你建议的那样切换到非标准化(?)但丰富的格式(视频时间戳)。
推荐阅读
- jquery - 在 iFrame 窗口中加载图像时显示引导微调器
- php - WooCommerce API 在每个请求上都给出 JSON 语法错误
- git - 如何重置 sshd_config 配置文件
- laravel - Eloquent:最新相关模型符合许可的模型范围
- c# - 使用公钥解密 RSA-SHA256 所需的 C# 代码
- javascript - 单击滑块时如何将类似滑块的复选框的滑块移动到其标签之一?
- acpi - 如何从 .asl 文件(ACPI 文件)方法打印到串行控制台?
- c# - Unity3D + protobuf-net:无法加载字段类型 Protobuf.BufferPool:_pool 由于... System.Buffers
- python - Openpyxl没有保存excel文件,为什么?
- gcc - lcov + gcov-9 由于使用 json 的性能回归