Re: Predictable Internet Time

Tony Finch <dot@dotat.at> Tue, 03 January 2017 22:33 UTC

Return-Path: <dot@dotat.at>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id E9B72129A7B for <ietf@ietfa.amsl.com>; Tue, 3 Jan 2017 14:33:17 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.619
X-Spam-Level:
X-Spam-Status: No, score=-2.619 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=messagingengine.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7bwQKnjdjI_S for <ietf@ietfa.amsl.com>; Tue, 3 Jan 2017 14:33:15 -0800 (PST)
Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 46E2D129A6A for <ietf@ietf.org>; Tue, 3 Jan 2017 14:33:15 -0800 (PST)
Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id B422820CF4; Tue, 3 Jan 2017 17:33:14 -0500 (EST)
Received: from web1 ([10.202.2.211]) by compute4.internal (MEProxy); Tue, 03 Jan 2017 17:33:14 -0500
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc; s=smtpout; bh=5d h4zNn+IQrPiYClWwuRI5VEeL4=; b=UqYIhTmKxF+g3LNpEb9cR0augiown9FQ0B KxNgjQuFs7gscGPgzXP3sgDMgI5T1kZo0ZLxzwCdwBPY+Bb7CPmKCWhu+o95ar0S O/6QIGirmWgu0ALRyLfWO4K9TsakyPfAGnBOK6y19yvqYsnHm51c2zZRvAOsK8ZL ujKXfJOAg=
X-ME-Sender: <xms:qiZsWIdZX6lc8R9Xz_t-ptmfI2hNkWwYsEuS-v5qp3V2Rot9EOTkkA>
Received: by mailuser.nyi.internal (Postfix, from userid 99) id 87C21AA6C5; Tue, 3 Jan 2017 17:33:14 -0500 (EST)
Message-Id: <1483482794.1375510.836410009.6D0F7910@webmail.messagingengine.com>
From: Tony Finch <dot@dotat.at>
To: Joe Touch <touch@isi.edu>
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: multipart/alternative; boundary="_----------=_148348279413755100"
X-Mailer: MessagingEngine.com Webmail Interface - ajax-9c115fcf
References: <CAMm+LwgfQJ8aG5wB=d3fRbbeje3J9o7Z4_DCuP8DL88ouDeKzw@mail.gmail.com> <504e2cea0d1668c31486b05fec0a967a4446aefe@webmail.weijax.net> <CAMm+Lwi_jU6gjdtdM6a2n_9_89tUvWBNXxnMtSjTEA++h1D4Ew@mail.gmail.com> <e0a43370-751f-808c-3719-9716f9cd57d1@isi.edu> <alpine.DEB.2.11.1701031348430.7102@grey.csi.cam.ac.uk> <f94415b6-d9f7-0a03-cf5b-ce39c109aa71@isi.edu> <1483475689.1348946.836323865.09305276@webmail.messagingengine.com> <94226b19-4690-ee8e-526e-04cc54e97b8e@isi.edu>
Date: Tue, 03 Jan 2017 22:33:14 +0000
In-Reply-To: <94226b19-4690-ee8e-526e-04cc54e97b8e@isi.edu>
Subject: Re: Predictable Internet Time
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/dVsm6o4Yjz_A-QMDhs6oAybfy0c>
Cc: Phillip Hallam-Baker <phill@hallambaker.com>, IETF Discussion Mailing List <ietf@ietf.org>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 03 Jan 2017 22:33:18 -0000

Joe Touch <touch@isi.edu>; wrote:

> On 1/3/2017 12:34 PM, Tony Finch wrote:

> >

> > Well, the problem is that "seconds since the epoch" is not a
> > count of
> > UTC seconds,

>

> Correct; it's UTC-(leap seconds since epoch start).

>

> > it is a mapping from broken-down time to a linear time,

>

> Seconds since epoch is as linear as it gets.



Except that that the number of leap seconds isn't constant, so it is
only superficially linear: there is a wrinkle at every leap second.


> The conversion of epoch seconds to larger units is where the leap

> seconds is counted.

>

> A "day" as a unit of time is not exactly 86400 seconds (if it were, we
> wouldn't need leap seconds).



POSIX disagrees with you (and it is in denial about its agreement
with UTC).


> > http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16


:: tm_sec + tm_min*60 + tm_hour*3600 + tm_yday*86400



There's no allowance for the number of leaps since the epoch in that
specification.


Try the following (and sorry about the perl, but the date command isn't
portable enough). Note that the difference between the POSIX time_t
seconds since the epoch is 1s (...8800 - ...8799 == 1) but the elapsed
time was 2s.


$ perl -MPOSIX -e 'print strftime "%F %T\n", gmtime 1483228799'

2016-12-31 23:59:59

$ perl -MPOSIX -e 'print strftime "%F %T\n", gmtime 1483228800'

2017-01-01 00:00:00



There is no distinct time_t value for 2015-12-31 23:59:60.



To make this message slightly more on-topic for this list, anyone who
cares about this subject should be aware that NTP timestamps work
exactly the same way as POSIX timestamps, except for a constant offset
between NTP time and POSIX time due to the different choice of epoch.
The relevant difference is that POSIX does not specify how leap seconds
are handled, whereas NTP has a couple of extra bits which allow the next
leap second to be transferred (in theory but often not in practice). NTP
also has no distinct timestamp value for the leap second, except if you
include the leap indicator bits.


Tony.

--

f.anthony.n.finch  <dot@dotat.at>;  http://dotat.at/  -  I xn--
  zr8h punycode