如何使用ISO 8601表达500毫秒的持续时间?对我来说,documentation并非100%明确。它只是“PT0.5S”吗?
答案 0 :(得分:5)
是
我只能找到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中规定的十进制符号:即 逗号[,]或句号[。]。其中,逗号是首选标志。如果数量的幅度较小 如果小于1,则十进制符号前面应为零(参见ISO 31-0);
c)如果这些表达式中的年,月,日,小时,分钟或秒数等于 零,数字和相应的指示符可能不存在;但是,至少有一个数字及其数字 指定人员应在场。请注意,不允许删除前导非零组件;
d)如果没有所有时间成分,则不存在指示符T.
这一切与维基百科文章一致,因此持续时间为500毫秒的ISO-8601应为PT0,5S
或PT0.5S
答案 1 :(得分:1)
它只是“PT0.5S”吗?
是的,这是正确的表示。
java.time.Duration
以 ISO-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 :(得分:-4)
由于ISO 8601代表日期和时间而非间隔,所以我假设从1970年1月1日星期四起500毫秒(就像unix时间戳一样)。
1970-01-01T00:00:00.5Z
更新: 是的' PT0.5S'是您引用的文档的正确解释。 显然我之前的回答错过了文档中的持续时间部分,或者可能会在以后添加。谢谢@ strife25