ISO 8601 持续时间中零的规范表示是什么?

What is the canonical representation of zero in ISO 8601 durations?

http://en.wikipedia.org/wiki/ISO_8601#Durations

不清楚 ISO 8601 持续时间中零的最正确表示是什么。

可能的候选人:

PT0S

本站: http://www.ostyn.com/standards/scorm/samples/ISOTimeForSCORM.htm

PT0H0M0S

或者可能最简单的是

P

但是什么是最正确的呢?是否有规范的零持续时间表示?

单个字母 "P" 肯定是错误的,因为必须至少存在一个持续时间元素。

SCORM 规范需要 "PT0H0M0S" 只是因为向后兼容早期的 SCORM 版本,而不是因为 ISO 强制要求它。您给出的 link 的引文:

the SCORM 2004 1.3.1 conformance test suite was coded to require the PT0H0M0S format for the initial zero value of the total attempt time; using that format is therefore recommended where compatibility with early implementations of SCORM 2004 is required.

因此,如果您不使用 SCORM,那么表达式 "PT0S" 就完全足够了。但是,我不记得原始 ISO-8601 论文中的任何位置,他们在其中指定了零持续时间的外观。相反,ISO-8601 还描述了替代的持续时间格式,如 "P0000-00-00T00:00"。

如果我们将单词 "canonical" 解释为 "conform with ISO-8601",则不只有一种规范表示。

更新(查看原始 ISO 文件后):

ISO-8601 要求至少一个元素的持续时间为零(4.4.3.2.c - 第 21 页):

If the number of years, months, days, hours, minutes or seconds in any of these expressions equals zero, the number and the corresponding designator may be absent; however, at least one number and its designator shall be present.

第 4.4.3.3 段说:

The complete representation of the expression for duration in the alternative format is as follows:

Basic format: PYYYYMMDDThhmmss or PYYYYDDDThhmmss

Extended format: PYYYY-MM-DDThh:mm:ss or PYYYY-DDDThh:mm:ss

另请记住,并非每个软件都能够支持所有格式变体。