Time ISO 8601持续时间(毫秒)?

Time ISO 8601持续时间(毫秒)?,time,duration,iso8601,Time,Duration,Iso8601,如何使用ISO 8601表示500毫秒的持续时间?对我来说,答案不是100%清楚。它只是“PT0.5S”吗?因为ISO 8601表示日期和时间,而不是间隔,所以我假设从1970年1月1日星期四开始500毫秒(就像unix时间戳一样) 1970-01-01T00:00:00.5Z 更新: 是,根据您参考的文件,“PT0.5S”是正确的解释。 显然,我以前的回答在文档中遗漏了持续时间部分,或者可能会在以后添加。谢谢@strife25是的 我只能找到8601的旧草案,但它在分数表示上是明确的: 5.5

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

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

1970-01-01T00:00:00.5Z

更新: 是,根据您参考的文件,“PT0.5S”是正确的解释。 显然,我以前的回答在文档中遗漏了持续时间部分,或者可能会在以后添加。谢谢@strife25

是的

我只能找到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

只是“PT0.5S”吗

是的,这是一个正确的表示

使用Java-8标准库进行测试 是仿照的,并作为的一部分引入

演示:

import java.time.Duration;
公共班机{
公共静态void main(字符串[]args){
系统输出打印项数(单位:百万(500))的持续时间;
}
}
输出:

PT0.5S

了解现代日期时间API我无法回答,但我同意您的解释。维基百科是目前最好的“文档”,这太糟糕了,因为必须从ISO购买完整的规范才能给出答案。我经常认为,让人们为标准文档付费并不能很好地推广标准。这个答案是不够的,因为ISO 8601包含了关于声明持续时间的信息,如下所述: