是。
我只能找到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将不存在。
所有这一切与Wikipedia文章一致,因此持续时间为500 ms的ISO-8601应该为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));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
PT0.5S
Run Code Online (Sandbox Code Playgroud)
从Trail: Date Time了解现代日期时间 API 。