【问题标题】:ISO 8601 Duration with milliseconds?ISO 8601 持续时间(以毫秒为单位)?
【发布时间】:2014-11-21 09:53:36
【问题描述】:

应该如何使用 ISO 8601 表示 500 毫秒的持续时间?对我来说,documentation 并不是 100% 清楚的。只是“PT0.5S”吗?

【问题讨论】:

  • 我无法回答,但我同意你的解释。维基百科是现成的最好的“文档”,这太糟糕了,因为必须从 ISO 购买完整的规范才能给出答案。
  • 我经常认为让人们为标准文档付费并不能很好地推广标准。

标签: time duration iso8601


【解决方案1】:

只是“PT0.5S”吗?

是的,这是正确的表示。

使用 Java-8 标准库进行测试

java.time.DurationISO-8601 standards 为蓝本,并作为JSR-310 implementation 的一部分引入。

演示:

import java.time.Duration;

public class Main {
    public static void main(String[] args) {
        System.out.println(Duration.ofMillis(500));
    }
}

输出:

PT0.5S

Trail: Date Time 了解现代日期时间 API。

【讨论】:

    【解决方案2】:

    是的。

    我只能找到 8601 的旧草稿,但它在分数表示上是明确的:

    5.5 时间段

    5.5.1 指定时间段的方法

    时间段应以下列方式之一表示:

    a) 作为由特定开始和特定结束分隔的持续时间;

    b) 以一个或多个特定组件表示但不相关的持续时间 有任何特定的开始或结束;

    c) 作为与特定开始相关的持续时间;

    d) 作为与特定结束相关的持续时间。

    5.5.2 分隔符和指示符

    在 5.5.1 a)、c) 和 d) 中,应使用固线 [/] 分隔两个组件。

    对于 5.5.1 b)、c) 和 d),指示符 [P] 应在持续时间表示之前,不带空格。

    应使用其他指示符(以及用于表示省略组件时的连字符),如 5.5.4和5.5.5以下。

    以后

    5.5.3.1 带有时间单位指示符的格式

    在 时间段或重复时间间隔持续时间的表达式可以由以下数据元素表示 可变长度。年数后跟代号 [Y],月数 [M],周数 [W],天数 [D]。那个部分 包括时间成分应以代号 [T] 开头;应遵循小时数 [H],分钟数 [M],秒数 [S]。在示例中 [n] 代表一个或多个数字,构成一个正整数或零。

    在完整表示中,格式应为 nYnMnDTnHnMnS 或 nW。

    对于这种持续时间格式的降低精度、小数或截断表示,请遵循以下规则 申请:

    a) 如果对特定应用有必要,可以省略最低阶组件来表示 精度降低的持续时间;

    b) 如果特定应用需要,最低阶组件可能有小数部分。这 小数部分应从整数部分除以 ISO 31-0 中规定的小数符号:即 逗号 [,] 或句号 [.]。其中,逗号是首选符号。如果数字的大小更小 比统一,小数点前应加一个零(见 ISO 31-0);

    c) 如果这些表达式中的年数、月数、天数、小时数、分钟数或秒数等于 零,数字和相应的代号可能不存在;但是,至少有一个数字及其 指定人应在场。请注意,不允许删除前导非零组件;

    d) 如果所有时间分量都不存在,则指示符 T 将不存在。

    所有这些都与维基百科的文章一致,因此持续时间为 500 毫秒的 ISO-8601 应该是 PT0,5SPT0.5S

    【讨论】:

    • 虽然 ISO8601 允许在最低阶组件中使用分数,但 Java 只允许以秒为单位的分数。
    【解决方案3】:

    由于 ISO 8601 表示日期和时间而不是间隔,所以我假设从 1970 年 1 月 1 日星期四开始为 500 毫秒(就像 unix 时间戳一样)。

    1970-01-01T00:00:00.5Z

    更新: 是的,根据您引用的文档,“PT0.5S”是正确的解释。 显然我之前的回答错过了文档中的持续时间部分,或者可能稍后添加。谢谢@strife25

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    相关资源
    最近更新 更多