[pubcomment-l] some comments on CC/FDS 18011:2018

Michael H Deckers michael.h.deckers at googlemail.com
Sun Jun 16 07:36:03 PDT 2019




    The following are a few comments about [CalConnect 2019].

    Reference:
        [CalConnect 2019] The Calendaring and Scheduling Consortium:
        "CC/FDS 18011:2018  Date and time -- Explicit
        representation".  as of 2019-06-15.
        online at
        [https://standards.calconnect.org/csd/cc-18011.pdf]

    [section 3.2.4, p 11]

       The word, "positive" means > 0, but the tokens
       'i' and 'n' take the value zero in some cases.
       Hence, "positive" must be replaced by "non-negative"
       or by ">= 0".


     [section 4.4.7. Calendar year before year one, EXAMPLE 4, p 22]

         The example is incorrect:
             " ‘12CB’ the twelfth century before year one,
                      equivalent to the effect of time interval
                      ‘-1190/-1100’.  "
         because the given interval contains only 91 years.

         So, the example should be reworded as:
               ‘12CB’ the twelfth century before year one,
                      effectively equivalent to the time intervals
                      ‘-1199Y/-1100Y’ and '1200YB/1101YB'.

         But that is only one of the problems with this
         section. There are two other problems.

         The first is that ISO 8601-2:2019 does not allow
         notations like ‘12CB’ but instead uses '-11C' for
         this same century (which is not allowed by CalConnect).

         I think that the choice of ISO is very bad because
         of the error prone (and tasteless) distinction
         between '-0C' and '0C'; but CalConnect should at
         least mention the discrepancy.

         The other problem is that this definition of
         century does not agree with the definition in
         ISO 8601, which is included into [section 3] by
         reference. (Yes, this is also an error in
         ISO 8601.)

     [section 8.4 . Composite duration, step b]

         Step b is a kind of normalization of a datetime
         expressed with calendar date and time components
         that may assume values outside their customary ranges.
         It is described as:
              "In the resulting date and time representation,
               start from the lowest order overflowed time scale
               component, perform carry-over on all overflowed
               time scale components, until there is no more
               overflow in the representation. "

         This recipe fails to say how an overflow in a day of
         the month component is to be detected when the higher
         order component also overflows. As an example, consider
         the addition
             '2015Y02M28 + P12M2D'
         which results in the notation '2015Y14M30D' with
         some components out of their customary range.

         In order to see whether the component '30D' is in
         range or not, one would have to reduce the overflow
         in the month field, '2015Y14M' to '2016Y02M', so that
         we would finally obtain '2016Y03M01D' -- but this would
         be against the recipe which requires dealing first with
         any overflow in the '30D' component before we consider
         the overflow in the month component.
         So do we have to use the original value '2015Y02M'
         for the reduction of '30D'? This would yield
         '2015Y15M02D' and '2016Y03M02D' on further reductions.
         Or do we just have to leave the '30D' component as is
         (because it just may not overflow) and then reduce to
         '2016Y02M30D' which will be truncated in step c to
         '2016Y02M29D'?

         The recipe leaves us with 3 possible outcomes, and
         a more precise specification is needed when a reliable
         arithmetic is desired. (A similar question arises
         with arithmetic on ITU-R leap second notaions but
         that is thoroughly obscure anyway.)

    Michael Deckers.



More information about the pubcomment-l mailing list