On Tue, Jan 15, 2019 at 11:58 AM Gary E. Miller <[email protected]> wrote:
> Yo Tom! > > On Tue, 15 Jan 2019 10:50:10 -0800 > "Tom Van Baak" <[email protected]> wrote: > > > Nope. All minutes have 60 seconds in Excel. And in Windows. And in > > Unix/POSIX. > > Not quite. Check out "man gmtime" for one way that POSIX represents time. > Yes and no. time_t doesn't have leap seconds. At all. Ever. So from that perspective, POSIX can't do leap seconds. time_t is so engrained in the other interfaces of POSIX, they can't have leap seconds either. > Specifically: > > struct tm { > [...] > int tm_sec; /* Seconds (0-60) */ > > gmtime() is perfectly capable of reporting 61 seconds in a minute. > > Failure to account for this causes mnay problems. > > What it does not do well is accounting for leap seconds that are in > the past or future. > Except that's not a leap second. struct tm doesn't do leap seconds really. It kinda sorta does, but it kinda sorts doesn't. First, when you convert back and forth to time_t, you lose leap second information. It's impossible to convert back and forth from at least the UTC time zone. There's some 'right' time zones, but they aren't strictly speaking POSIX compliant because it uses the wrong math. Non-conforming, but damned useful and not wrong. Second, many of the tm_xxxx fields can create a time that's N xxxx's in the future by adding N to that structure and converting. So tm_sec == 60 could be a leap second, or it could be the second after tm_sec == 59. > > Right, this is typical for almost any software developed anywhere. > > Leap seconds are such a weird exception, almost no commercial > > software, web frontend or backend, or mobile phones, or mobile apps > > deal with them correctly. > > But gpsd and ntpd try real hard to be correct. Sadly, with leap smear, > there is no consensus on what is 'correct'. > Both leap seconds and leap second smear must die. Others have different opinions, some strongly held. Not all the contradictory opinions are necessarily wrong. Warner
_______________________________________________ LEAPSECS mailing list [email protected] https://pairlist6.pair.net/mailman/listinfo/leapsecs
