comp.lang.ada
 help / color / mirror / Atom feed
From: gwinn@ma.ultranet.com (Joe Gwinn)
Subject: UNIX/POSIX Time
Date: 1998/10/20
Date: 1998-10-20T00:00:00+00:00	[thread overview]
Message-ID: <gwinn-2010982201500001@d106.dial-3.cmb.ma.ultra.net> (raw)

After being questioned by Keith Thompson about the exact details of POSIX
time, I dug into the references and did some full-precision time
computations.

The UNIX/POSIX time format consists of two *signed* 32-bit integers, one
being the number of seconds since 00:00 UTC 1 January 1970 AD (the
"Epoch", or timescale zero), the other being the number of decimal
nanoseconds into the current second. (Ref: IEEE Std 1003.1-1996 chapter 14)

The above paragraph has been corrected.  We had discussed making the integers 
optionally unsigned, but didn't, for compatibility with existing base.


The full-precision time calculations:

Signed time_t rolls over after 2^31 seconds, which is 24,855.135 days 
from 00:00 UTC 1 Jan 1970 AD, the UNIX Epoch.  

Julian Day  244 0587.500   <-- 00:00 UTC 1 Jan 1970 AD.
             +2 4855.135   <-- 2^31 seconds, in days.

Julian Day  246 5442.635   <-- 03:14 UTC 19 January 2038 AD

This 2038 AD date is what one most often hears as the UNIX rollover.


Un-signed time_t rolls over after 2^32 seconds, which is 49,710.270 days 
from 00:00 UTC 1 Jan 1970 AD, the UNIX Epoch.  

Julian Day  244 0587.500   <-- 00:00 UTC 1 Jan 1970 AD.
             +4 9710.270   <-- 2^32 seconds, in days.

Julian Day  249 0297.770   <-- 06:29 UTC 7 February 2106 AD


The 2100 AD figure comes from a rougher calculation, sufficient for most
purposes, as I plan to be dead, buried, and forgotten by then.

I would not expect rollover in 2038 to be a problem, as time_t will become
a 64-bit signed number by then, deferring the issue for 2.9e11 years, or
so.

Joe Gwinn




             reply	other threads:[~1998-10-20  0:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-10-20  0:00 Joe Gwinn [this message]
1998-10-21  0:00 ` UNIX/POSIX Time Dale Stanbrough
1998-10-21  0:00   ` Markus Kuhn
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox