[LEAPSECS] [time-nuts] Leap Quirks
    Magnus Danielson 
    magnus at rubidium.dyndns.org
       
    Mon Jan  5 05:45:57 EST 2009
    
    
  
Zefram skrev:
> M. Warner Losh wrote:
>> So time_t is effectively defined in POSIX to be:
>>
>> 	d * 86400 + min(tod(x), 86399)
>>
>> where d is the number of days since 01-01-1970, and tod is the second
>> since midnight within the day.
> 
> Actually it's simpler than that.  The expression given by POSIX amounts to
> 
> 	d * 86400 + tod(x)
> 
> so a leap second appears identical to the first second of the next day,
> rather than a repeat of the previous second.  What's actually implemented
> by particular kernels varies; Linux, for example, does something in
> between these, jumping backwards (by 1) a few milliseconds after the
> start of the leap second.
Actually, this is just implementing the POSIX UTC to time_t mapping.
2008-12-31T23:59:60Z and 2009-01-01T00:00:00Z maps to the same POSIX 
time_t second so by reversing the stepping of second just done at the 
beginning of the leap second implements this.
The NTP time follows the same jump fashion, but with a different offset.
The figure at the bottom of
http://www.cis.udel.edu/~mills/leap.html
shows graphically what is going on and the table give the same in 
numbers. A POSIX time_t column could be added, but it would just be a 
static offset from the NTP seconds.
A simplified model of the POSIX time_t would be
time_t = d*86400 + h*3600 + m*60 + s
which helps to have written out when comparing the two cases.
Cheers,
Magnus
> -zefram
> _______________________________________________
> LEAPSECS mailing list
> LEAPSECS at leapsecond.com
> http://six.pairlist.net/mailman/listinfo/leapsecs
    
    
More information about the LEAPSECS
mailing list