ietf
[Top] [All Lists]

Re: Predictable Internet Time

2017-03-28 16:37:31
Hi, all,

Please take this discussion to ART (art(_at_)ietf(_dot_)org)

Joe


On 3/28/2017 10:39 AM, Nico Williams wrote:
On Tue, Jan 03, 2017 at 06:35:03PM +0000, Stewart Bryant wrote:
Yes, the system should use a leap-second-free constant-duration-seconds time
for everything. It is only humans that need the variable jumpy version of
time presented to them, and that is a UI issue.
I don't think that's quite right.

Unix time is canonically a count of seconds since an epoch and admits no
leap seconds.  A conversion of Unix time to adjusted (i.e., with leap
seconds added) time since the same epoch would be nice, as well as:

 - conversion from either to broken down time
    - with seconds count up to 60 when converting from seconds-with-leaps
 - formatting of dates from either as well as from broken down time
    - but when converting from seconds-with-leaps the formatted string
      can show seconds-in-minute values of 60
    - whereas when converting from Unix seconds the formatted string can
      never show seconds-in-minute values of 60
 - parsing to broken down time and to seconds-since-epoch types
    - ignoring leap seconds when converting to Unix time
    - correctly accounting for all leap seconds prior to that time when
      converting to seconds-with-leaps-since-epoch

It's all about data typing.  In POSIX C API terms, we need new functions
to deal with seconds-with-leaps-since-epoch, and obviously a lot of
prayer because there's no way in C to distinguish one integer type from
the other (well, the new type could be wrapped in a struct..).

We will have to deal with multiple kinds of time as long as different
applications/users need different definitions of time.  Astronomers may
need corrected time, while bankers may want to ignore leap seconds --
all on the same systems (same OSes, same code libraries).

Functionally this is about data typing -- preferably strong data typing.

Smearing is a third time representation that also needs conversion to
the other types (more opportunity for bugs!); it leaves a bad taste.  It
may work for some apps though, but all nodes had better smear in exactly
the same way -- within your tolerances -- if your app depends on time
for synchronization.

Nico