ISO 8601小时数不一致

时间:2016-03-02 16:50:17

标签: time iso8601

ISO 8601,第5.3节规定

  

小时由[01]至[24]

中的两位数字表示

但在下文中,第5.3.2节允许午夜“00:00:00”和“24:00:00”。

我也从经验中知道,午夜小时通常由数字[00]表示,而从[24]除以午夜的确切秒数。所以这似乎是规范中的错误。当然有人在我面前注意到这一点。是否有出版的勘误表?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我不知道最新的ISO-8601论文中的第5.3节,但请看:

  

4.2.3午夜

     

根据4.2.2,午夜的基本和扩展格式的完整表示应表示为   以下两种方式之一:

    Basic format       Extended format 
 a) 000000             00:00:00 (the beginning of a calendar day) 
 b) 240000             24:00:00 (the end of a calendar day) 
     

陈述可能已减少   准确度符合4.2.2.3或可指定为时间   表达符合4.2.2.5。代表午夜   表示可以用包含的小数部分进行扩展   根据4.2.2.4只有零。

     

注1:午夜通常表示为[00:00]或[24:00]。

     

注2:一个日历日[24:00]的结束时间与下一个日历开始时的[00:00]一致   一天,例如1985年4月12日[24:00]与4月13日[00:00]相同   如果与日期或时间间隔没有关联,则a)和b)代表24小时计时中的相同当地时间   系统。

     

注3:表示a)或b)的选择取决于   与日期或时间间隔的任何关联。表示在哪里   [hh]的值[24]仅优先表示符合4.4的时间间隔的结束或符合4.5的重复时间间隔。

所以我认为一切都很好,没有不一致。

顺便说一句,我已经在我的Java时间库Time4J中调整了这个特殊值24:00(参见类net.time4j.PlainTime)以启用更优雅的时间间隔描述。而且我也从现实生活中知道这样的小时值并不罕见(例如在商店开放时间)。