[LEAPSECS] Java JSR-310 Instant class: suggested changes

Stephen Colebourne scolebourne at joda.org
Sat Jan 29 17:31:58 EST 2011

On 29 January 2011 15:06, Gerard Ashton <ashtongj at comcast.net> wrote:

> I suggest the following replacement for parts of the the Instant

> description. I offer the replacement because the wording of

> UTC-SLS clearly only applies after 1 January 1972, and that

> scale should be regarded as undefined prior to that date.

Thanks for the thoughts. I can see where you are driving at, but since
UT/UT1/UT2 are not well-defined in the far past AFAIK, then the
definition below isn;t ideal either. I agree that something needs to
change though.



> This is the Javadoc for Instant, the most widely used class. It has

> 86400 "seconds" per day as most users want and expect....


> * <h4>Time-scale</h4> * <p> * {@code Instant} uses, beginning

> 1972-01-01T00:00 UTC, the

> <a href="http://www.cl.cam.ac.uk/~mgk25/time/utc-sls/">UTC-SLS</a>

> time-scale which always has 86 400 seconds in a day.


> *Prior to 1972-01-01T00:00 UTC the time scale is universal time (UT),

> each day of which shall consist of 86 400 seconds, and the precise variant

> of

> UT (such as UT1 or UT2) shall be application defined.


> *At the transition between the UT time scale and the UTC-SLS time scale

> there was a step. If UT is interpreted as UT1 then in reality at

> 1972-01-01T00:00 UTC

> UTC-SLS = UTC; UTC - UT1 = 0.043 s.


> *Due to the undesirability of steps, for purposes of this class

> the approximation

> 1972-01-01T00:00 UT = 1972-01-01T00:00 UTC

> is adopted and applications which cannot tolerate this

> approximation shall not use this class.


> * Essentially, UTC-SLS is a consistent mechanism of converting an

> accurate UTC time....


> * The UTC-SLS time-scale and UT time-scale are also used for all

> human-scale date-time classes, such as {@code OffsetDateTime}


> and {@code ZonedDateTime}.


> * The standard Java epoch of 1970 is

> prior to the introduction of whole leap seconds into UTC in 1972.

> *As such, the Time Framework for Java needs to define what the 1970

>> epoch actually means.

> * The chosen definition is that the value of Instant for

> 1972-01-01T00:00 UTC is 63 072 000 seconds.


> * Operations to add or subtract durations

> will result in the number of nominal seconds which passed

> using the UT or UTC-SLS time scale(s) in effect at the time

> the duration took place, which will not necessarily be

> SI seconds.


> * Use {@code UTCInstant} or {@code

> TAIInstant} if accurate duration calculations are required.


> Gerry Ashton


> _______________________________________________

> LEAPSECS mailing list

> LEAPSECS at leapsecond.com

> http://six.pairlist.net/mailman/listinfo/leapsecs



More information about the LEAPSECS mailing list