I have an idle fascination with matters of time and date, so I have written a number of articles and bits of code — although it’s just a hobby with no ambitions to be practical or useful to anyone but me (and mostly not even then).
- gregorian calendar
- time zones
- chronophage clock
- where does time come from?
- compact leap seconds list
- leap second hiatus
- past leap seconds
- next leap second
- twitter threads
- IERS bulletins
- other resources
gregorian calendar
Counting the days - tiny routines for converting
Gregorian dates into linear counts, like Julian day numbers or Unix
time_t
.
The date of the count - a small routine for converting linear day counts into Gregorian dates.
Most implementations I have seen of these functions use some kind of iterative search to find the right result. My versions use arithmetic like Zeller’s congruence to go directly to the result.
time zones
iCalendar is wrong - standard calendaring data models have a confusing way to handle time zones, which could (in theory) be improved.
Timezone display by MUAs can be confusing (and improved) in a similar way.
A related annoyance is that the Unicode CLDR has standard “friendly” localized descriptions for time zone names, which are very confusing and often wrong for more than half the year.
I wrote a little datez
utility in Rust to help me deal with these problems.
chronophage clock
There’s a spectacular clock in the centre of Cambridge. I wrote a few blog articles about it when it was new in 2008/9:
- a description of the clock
- addenda and corrigenda
- notes on a talk by John Taylor who invented the clock
where does time come from?
At the RIPE86 meeting I gave a short presentation on where time comes from. I have a blog version of the talk and some notes on the talk. Geoff Huston wrote about the talk.
compact leap seconds list
I publish cryptographically signed lists of leap seconds in the
DNS at leapsecond.dotat.at
in various formats:
-
AAAA
- the date and time of the last second in months that end with a leap second, plus the last second of the known validity period if that is not a leap second, in binary-coded decimal. -
TXT
- the intervals between leap seconds in months, separated by a+
or-
for positive or negative leap seconds, and terminated by a?
-
TYPE65432
- compressed binary encoding of theTXT
record -
URI
- a link to the specification -
HINFO
- brief descriptions of the other record types
I have a specification and reference implementation in Rust for my
compact leap second list formats (TXT
and TYPE65432
above):
You can find the code for drawing the leap second clock logo
above in the leapsecs
documentation.
leap second hiatus
The last leap second was at the end of 2016, and the current gap is going to be longer than the previous record of 7 years (1999-2005).
Unlike last time, the earth has sped up so much that since the end of 2020 it now takes less than 24 * 60 * 60 seconds to rotate each day (it always used to be longer). This brings us the prospect of a negative leap second !!!!!
I wrote a blog article in November 2020 when this first came to my attention.
This hiatus might become permanent if leap seconds are abolished. I have written some notes on the plans for leap seconds following the 2022 CGPM. (This is, roughly speaking, round two of the effort to abolish leap seconds, which has now been going on for over 20 years.)
past leap seconds
There was an awkward gap from the start of TAI to the start of UTC, when the difference between atomic time and civil time was represented with varying “rubber seconds”. I suggested proleptic UTC as a way to make it easier to bridge the gap with fixed atomic seconds.
next leap second
I have a Rust program that makes a guesstimate of when the next leap second will occur, and whether it will be positive or negative. It uses the long-term projection formula from IERS Bulletin A.
twitter threads
My off-the-cuff wittering on this topic occured on Twitter and now the Mended Drum, where they are hard to find and difficult to navigate, so I have collected them here:
- 2022-11-19: the governance around leap seconds is amazingly complicated
- 2022-11-18: the CGPM approved the resolution to (probably) stop leap seconds
- 2022-08-11: discussion of draft CGPM resolution on UTC
- 2022-07-19: Bulletin D 142, and LoD = 24h - 320μs
- 2022-07-05: Bulletin C 64, and LoD = 24h - 310μs
- 2022-04-29: new LoD record, drops below 24h - 270μs
- 2022-01-05: Bulletin C 63 cockup, LoD = 24h - 200μs apparently slowly growing?
- 2021-06-29: a Bulletin D explainer, and what it means when DUT1 increases
- 2021-04-27: reading Bulletin A and making predictive guesses
- 2021-04-05: earlier notes on Bulletin A
- 2021-01-26: a potted history of how leap seconds came to be
- 2020-11-13: original version of my leap second hiatus blog post
- 2020-07-07: Bulletin C 60, and the long gap between leap seconds
IERS bulletins
I pay attention to three of the IERS bulletins (C and D by subscribing to email notifications):
-
Bulletin A - weekly forecast of earth rotation parameters, which I use for guessing about the next Bulletins C and D
-
Bulletin C - leap second announcements, published every 6 months: in early January, regarding the possible leap second at the end of June; and in early July, regarding the possible leap second at the end of December.
-
Bulletin D - announcements of DUT1 in increments of 0.1 second (as required by ITU TF.460), published irregularly as necessary.
other resources
-
ITU TF.460 is a standard for radio time signals, and the specification for leap seconds
-
leapsecond.com - Tom Van Baak’s time nut pages
-
Steve Allen’s pages on leap seconds - I often refer to his extrapolation of the difference between TAI and UT1