如何使用ISO 8601表示500毫秒的持续时间?对我来说,文档并不完全清晰。它只是"PT0.5S"吗?
答案:是的,500毫秒的ISO 8601表示法为"PT0.5S"。是的。
我只能找到一份关于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 带时间单位标识的格式PT0,5S
或PT0.5S
。只需要写“PT0.5S”吗?
是的,这是正确的表示方法。
java.time.Duration
是基于ISO-8601标准建模,并作为JSR-310实现的一部分引入。
演示:
import java.time.Duration;
public class Main {
public static void main(String[] args) {
System.out.println(Duration.ofMillis(500));
}
}
输出:
PT0.5S
从Java 日期和时间教程了解现代日期时间API。
PT0.5S
是正确的,只要使用ISO 8601持续时间格式P(n)Y(n)M(n)DT(n)H(n)M(n)S
,没有毫秒的位置。
所以对于10 毫秒
,应该是PT0.01S
,而 1 毫秒可以表示为PT0.001S
ISO 8601持续时间使用以下格式表示,其中(n)
被替换为后面的日期和时间元素的值:
(n)
Y(n)
M(n)
DT(n)
H(n)
M(n)
S这里
P是持续时间的标识符(称为“周期”),始终放置在持续时间的开头。
Y是年份的标识符,紧跟着年数的值。
M是月份的标识符,紧跟着月数的值。
W是周数的标识符,紧跟着周数的值。
D是天数的标识符,紧跟着天数的值。
T是时间的标识符,位于时间组件之前。
H是小时的标识符,紧跟着小时数的值。
M是分钟的标识符,紧跟着分钟数的值。
S是秒数的标识符,紧跟着秒数的值。
...
ISO 8601
2023-08-25T08:35:16.792Z
supporting format: 1970-01-01T00:00:00.000Z or 1970-01-01T00:00:00.000+00:00
...