我想知道以下日期是否符合ISO8601标准:
2012-03-02 14:57:05.456+0500
(当然,2012-03-02T14:57:05.456 + 0500是合规的,但不是那么多人类可读!) IOW,日期和时间之间的T是强制性的吗?
答案 0 :(得分:26)
需要这样做。同意省略它。
引用ISO 8601 standard,第4.3.2节:
字符[T]应作为时间指示符来表示 开始在这些中表示时间组件 表达式。 [...]
注:经信息交流合作伙伴双方同意, 在没有的情况下,可以省略字符[T] 将日期和时间表示与他人混淆的风险 本国际标准中定义的。
省略它是相当常见的,但如果表示是机器可读的并且您没有明确同意可以省略它,则建议将其保留。
更新:Mark Amery的评论很明确,省略[T]的许可并不一定意味着允许用空格替换它。所以这个:
2012-03-02T14:57:05.456+0500
显然符合要求,并且:
2012-03-0214:57:05.456+0500
如果合作伙伴同意省略[T],则允许,但是:
2012-03-02 14:57:05.456+0500
显然不是(虽然它比简单省略[T]的版本更具可读性。)
就个人而言,如果要求符合ISO 8601标准,我会包含[T],如果不是,那么我会使用一个空格(如果它是一个连字符)将成为文件名的一部分)。我的猜测,仅此而已,其目的是让“T'被空格所取代,但标准并没有这样说。
另请参阅RFC 3339中提到的Charles Burns's answer第5.6节。
答案 1 :(得分:13)
该日期与Keith Thompson所说的不符合ISO-8601标准,但它 符合RFC 3339,ISO 8601的配置文件。 有点。请参阅RFC 3339:
中以下文字底部的注释date-time = full-date "T" full-time
NOTE: Per [ABNF] and ISO8601, the "T" and "Z" characters in this
syntax may alternatively be lower case "t" or "z" respectively.
This date/time format may be used in some environments or contexts
that distinguish between the upper- and lower-case letters 'A'-'Z'
and 'a'-'z' (e.g. XML). Specifications that use this format in
such environments MAY further limit the date/time syntax so that
the letters 'T' and 'Z' used in the date/time syntax must always
be upper case. Applications that generate this format SHOULD use
upper case letters.
NOTE: ISO 8601 defines date and time separated by "T".
Applications using this syntax may choose, for the sake of
readability, to specify a full-date and full-time separated by
(say) a space character.