> TAI is the fundamental time scale, with UTC derived from it. As TAI > advances, you can calculate UTC by subtracting TAI-UTC from it. At TAI > = 34 seconds, TAI-UTC is 35 and the corresponding UTC time is 23:59:59. > That can be arithmetically correct only if you don't count the leap > second, so let's not count it.
That sounds dangerous. There's a one-to-one mapping between valid UTC timestamps and valid TAI timestamps. Yes, you need a table to do the mapping, but the mapping is unambiguous (for recent and near future times). > When the TAI time is 35 seconds, you would think the UTC time would be > 0 seconds, but because of the leap second it is 23:59:60. Thus, the > value of TAI-UTC doesn't tell you everything you need to know to > convert from TAI to UTC: you also have to know that there is a leap > second in progress. Huh? No, that doesn't sound right at all. If your TAI-UTC table and code are correct, then every valid UTC timestamp has a TAI equivalent and vice versa. What is *invalid* is a 23:59:59 UTC timestamp (negative leap) or a 23:59:60 UTC timestamp (positive leap) that is not prescribed by the table. A conversion from UTC to TAI will catch these errors and a conversion from TAI to UTC will not generate these errors. Also, any timestamp with hours<0 or hours>=24 or minutes<0 or minutes>=60 is invalid, without even looking at the table. For this, it's best not to think of "a leap second" as in progress or as a duration; otherwise you may give preferential treatment to positive leap seconds only, or make special cases for one over the other. Instead think of a leap second as an *event* that forces a table lookup of how long that day is. > I had thought that TAI-UTC was the only information needed to convert > from TAI to UTC, and therefore that it could not be a step function > because of positive leap seconds. I see now that I was mistaken. Is > my new belief correct that you need both TAI-UTC and the knowledge that > a leap second is in progress to convert from TAI to UTC? Hmm, it sounds like your new belief is wrong too. That's why I suggested writing tests for your library; so you could catch these errors yourself. The table is all you need to decide how to convert between TAI/UTC and UTC/TAI. Yes, the code gets tricky near +/- N seconds of midnight, where N is |TAI-UTC|. /tvb _______________________________________________ LEAPSECS mailing list [email protected] https://pairlist6.pair.net/mailman/listinfo/leapsecs
