How many seconds we have in a minute? 60, right? Well, not always :-) .
Since 1972, and for 22 times as today, a special minute was introduced, a minute with 61 seconds. The "extra" second it's called a "leap second".
This is needed to keep the most accurate clocks synchronized with Earth rotation.
The first leap second was introduced at the end of June the 30th, 1972. A correct clock should had shown, at the end of day, 23:59:58, 23:59:59, 23:59:60, 00:00:00 (July the 1st), 00:00:01
Negative "leap seconds", i.e. minutes with 59 seconds are also possible, if the speed of rotation increases enough, but no such leap seconds have ever been introduced.
His this important? Sometimes it is.
Unix (and others *nixes) operating systems use the numbers of seconds from seconds since the Epoch (usually 1970-01-01T00:00:00) for some tasks.
Unfortunately some Unix implementations take in account the "leap seconds". Others do not. So if we use Unix function to calculate time between dates, we can get different results, for the same input. That is not important for same application, but in geophysics, 22 seconds can be a long time (interval).
The problem is even a little more complex because before 1972 the corrections of time, due to irregularities of the earth rotation, were made with, "had hoc", micro stretching the duration of some seconds.
We have the TAI, Temps Atomique International, (French for International Atomic Time) that does not introduce leap seconds, but TAI is now (now= 2005:04:19) 32 seconds ahead of UTC (Universal Time Coordinate), used to set ours clocks, so UTC=TAI-32. GPS satellites have the clocks synchronized with TAI(-19 seconds) but can convert to UTC because convenient corrections are always uploaded when needed.
One big problem is that leap seconds are usually only know about six months in advance. So a program can hardly be able to take into account future leap seconds.
That why all my programs that make "time calculation" must find a special ASCII file, called "jsimoes_leap_sec_tab.txt" where the leap seconds are tabulated. An error is generated if the file has not been conveniently updated. All calculations that involve time must be done by my functions (routines).
Leap Seconds are announced at http://www.iers.org/iers/publications/bulletins/ (just look for: "iers bulletin c -leap seconds" or something like that).
Below I list a recent version of my file "jsimoes_leap_sec_tab.txt".
! (TAI-UTC) listed above is AFTER leap second "event"
!
! "best" name for THIS file: "jsimoes_leap_sec_tab.txt"
!
! do NOT change these initial comments
!
! year month day step TAI-UTC Bulletin Number Bulletin data
!
! (first leap second introduced in 1972-06-30:)
!
1972 06 30 +1 11 -1 0000-00-00
1972 12 31 1 12 -1 0000-00-00
1973 12 31 +1 13 -1 0000-00-00
1974 12 31 1 14 -1 0000-00-00
1975 12 31 +1 15 -1 0000-00-00
1976 12 31 +1 16 -1 0000-00-00
1977 12 31 +1 +17 -1 0000-00-00
1978 12 31 +1 18 -1 0000-00-00
1979 12 31 +1 19 -1 0000-00-00
1981 06 30 +1 +20 -1 0000-00-00
1982 06 30 +1 21 -1 0000-00-00
1983 06 30 +1 22 -1 0000-00-00
1985 06 30 +1 +23 -1 0000-00-00
1987 12 31 +1 24 -1 0000-00-00
1989 12 31 +1 25 -1 0000-00-00
1990 12 31 +1 +26 -1 0000-00-00
1992 06 30 +1 +27 -1 0000-00-00
1993 06 30 +1 +28 -1 0000-00-00
1994 06 30 +1 +29 -1 0000-00-00
1995 12 31 +1 +30 10 1995-07-03
1997 06 30 +1 +31 13 1997-01-06
1998 12 31 +1 +32 16 1998-07-17
!
! no more leap seconds possible until 2005-09-30T23:59:59
! unlike a leap seconds until 2005-12-31T23:59:59
! possible a leap second at 2005-12-31T23:59:59
!
2005 06 30 +0 +32 -1 0000-00-00