[LEAPSECS] Google, Amazon, now Microsoft

Brooks Harris brooks at edlmax.com
Sat May 30 22:02:58 EDT 2015

Hi Tom and Rob,

On 2015-05-30 06:05 PM, Tom Van Baak wrote:
>> Perhaps one should point out that local midnight is pretty much the worst
>> possible time for astronomers to accommodate such a change?
> Hi Rob,
> Oh, you're such an old earth+photon guy. Ask any space probe, neutrino, or gravitational astronomer if they share your sleep problem. ;-)
> I understand that's why JD rolls over at noon instead of midnight. But, for the other 7 billion people on the planet, it's nice that the calendar, and local legal time, and even MJD rolls over at midnight instead of noon.
> I can totally sympathize with Microsoft's "fix" for leap seconds.
I can't find any authoritative announcement or statement to this effect 
from Microsoft, and most references seem to go back round to this "The 
Register" article. Where does this information come from?
> Laugh if you want. But out of history, ignorance, compatibility, or dogma their first fix was never to accept or display a 61st second in the first place. Windows is more POSIX than POSIX, when you think about it.
Well, the lack of the 61st second (and 58 rollover) in most computer 
timescale implementations is at the root of the Leap Seconds problems. 
Windows shares that flaw - the Leap Second count itself goes missing.
> This recent "fix"
I got to thinking - what does Windows itself do, what has it always 
done, in this respect? Its sort of an obvious question that never 
occurred to me. I think maybe it's always done what this article says 
Azure its now going to do (or has been doing all along?).

I was experimenting a bit with the Windows time API itself to see if I 
could determine this. My investigation is a bit inconclusive at the 
moment, but I can't see where there is any difference in the way it 
counts on local timescales, in other words all local timescales are 
identical including, it seems, that a Leap Second occurs just before 
midnight. I'm not sure yet.

Finding authoritative information about Windows time mechanisms is 
difficult. I've never found a detailed enough explanation to answer my 
questions satisfactorily. Parts are obvious enough - it follows NTP, and 
it has dynamic (with a Windows update) timezone information in its 
registry (which conveniently does not match tz database). I don't 
believe it retains the Leap Second history anywhere.

There is this recent article that shows just how complicated the 
questions actually are.. Oh, and note, Window has had a "smear" 
mechanism in it since at least 2000 Server. Its not clear from this if 
that smear would, or is intended to, "paper over" a Leap Second from NTP.

How the Windows Time Service Works

Also note -
GetSystemTimeAdjustment function

SetSystemTimeAdjustment function

> avoids another side effect of leap seconds -- where it affects the Far East much more than Europe or even the US. Now every timezone gets the same treatment as London.
Its much more symmetrical and easier to implement that way.
> Yes, I know it's "against UTC rules".
Can anyone point me to a standard or specification that *explicitly and 
clearly* states that a Leap Second is to be accounted for, or 
instantiated, in the local-time count at any other time-point than the 
last second of the day? I've seen it stated, but not as an official, 
international, agreement or specification. It seems to be only "common 
use", and if Windows isn't doing it then its not very common.

In glibc we see that __tzfile_compute() (amongst the many functions 
related to gmtime() ) executes rather complex code that appears to apply 
the Leap Second differently on different timezones.

I'm quite familiar with the details and source of the implementation of 
the POSIX time mechanisms as supplied by the Microsoft MSVC c/c++ 
environment. It doesn't have mechanisms to treat the Leap Second 
differently on different timezone like glibc seems to.

I've studied the POSIX spec in regard to time carefully. I don't see 
where it calls for treating different timezone Leap Second updates 
differently. Maybe I'm missing it? How is it that glibc seems to have 
taken up that convention? Why does Microsoft's implementation lack it? 
Can anyone explain this?

> I'm also looking forward to reading the unpublished research papers that discuss the negative side of having 24+ different leap second events around the globe. What a mess.
Yes, it really doesn't make sense to have a discontinuity in the count 
in the middle of the day. Of course the whole of timekeeping barely 
makes sense. :-)

> On a positive note, this means one could actually experience more than one Windows non-leap-second on June 30. Maybe this year I should try to celebrate the leap second twice, in Mountain and in Pacific time. Time to pull out the road map.
> /tvb
> _______________________________________________
> LEAPSECS mailing list
> LEAPSECS at leapsecond.com
> https://pairlist6.pair.net/mailman/listinfo/leapsecs

More information about the LEAPSECS mailing list