xref: /freebsd/usr.sbin/ntp/ntpd/leap-seconds (revision 65ec2ae389239e84ada98889a8ac968b06d4ec5d)
19488993bSBrad Davis#
29488993bSBrad Davis#	In the following text, the symbol '#' introduces
39488993bSBrad Davis#	a comment, which continues from that symbol until
49488993bSBrad Davis#	the end of the line. A plain comment line has a
59488993bSBrad Davis#	whitespace character following the comment indicator.
69488993bSBrad Davis#	There are also special comment lines defined below.
79488993bSBrad Davis#	A special comment will always have a non-whitespace
89488993bSBrad Davis#	character in column 2.
99488993bSBrad Davis#
109488993bSBrad Davis#	A blank line should be ignored.
119488993bSBrad Davis#
129488993bSBrad Davis#	The following table shows the corrections that must
139488993bSBrad Davis#	be applied to compute International Atomic Time (TAI)
149488993bSBrad Davis#	from the Coordinated Universal Time (UTC) values that
159488993bSBrad Davis#	are transmitted by almost all time services.
169488993bSBrad Davis#
179488993bSBrad Davis#	The first column shows an epoch as a number of seconds
18*65ec2ae3SXin LI#	since 1 January 1900, 00:00:00 (1900.0 is also used to
19*65ec2ae3SXin LI#	indicate the same epoch.) Both of these time stamp formats
20*65ec2ae3SXin LI#	ignore the complexities of the time scales that were
21*65ec2ae3SXin LI#	used before the current definition of UTC at the start
22*65ec2ae3SXin LI#	of 1972. (See note 3 below.)
23*65ec2ae3SXin LI#	The second column shows the number of seconds that
24*65ec2ae3SXin LI#	must be added to UTC to compute TAI for any timestamp
25*65ec2ae3SXin LI#	at or after that epoch. The value on each line is
26*65ec2ae3SXin LI#	valid from the indicated initial instant until the
27*65ec2ae3SXin LI#	epoch given on the next one or indefinitely into the
28*65ec2ae3SXin LI#	future if there is no next line.
299488993bSBrad Davis#	(The comment on each line shows the representation of
309488993bSBrad Davis#	the corresponding initial epoch in the usual
319488993bSBrad Davis#	day-month-year format. The epoch always begins at
329488993bSBrad Davis#	00:00:00 UTC on the indicated day. See Note 5 below.)
339488993bSBrad Davis#
349488993bSBrad Davis#	Important notes:
359488993bSBrad Davis#
369488993bSBrad Davis#	1. Coordinated Universal Time (UTC) is often referred to
379488993bSBrad Davis#	as Greenwich Mean Time (GMT). The GMT time scale is no
389488993bSBrad Davis#	longer used, and the use of GMT to designate UTC is
399488993bSBrad Davis#	discouraged.
409488993bSBrad Davis#
419488993bSBrad Davis#	2. The UTC time scale is realized by many national
429488993bSBrad Davis#	laboratories and timing centers. Each laboratory
439488993bSBrad Davis#	identifies its realization with its name: Thus
449488993bSBrad Davis#	UTC(NIST), UTC(USNO), etc. The differences among
459488993bSBrad Davis#	these different realizations are typically on the
469488993bSBrad Davis#	order of a few nanoseconds (i.e., 0.000 000 00x s)
479488993bSBrad Davis#	and can be ignored for many purposes. These differences
489488993bSBrad Davis#	are tabulated in Circular T, which is published monthly
499488993bSBrad Davis#	by the International Bureau of Weights and Measures
50*65ec2ae3SXin LI#	(BIPM). See www.bipm.org for more information.
519488993bSBrad Davis#
52*65ec2ae3SXin LI#	3. The current definition of the relationship between UTC
539488993bSBrad Davis#	and TAI dates from 1 January 1972. A number of different
54*65ec2ae3SXin LI#	time scales were in use before that epoch, and it can be
559488993bSBrad Davis#	quite difficult to compute precise timestamps and time
569488993bSBrad Davis#	intervals in those "prehistoric" days. For more information,
579488993bSBrad Davis#	consult:
589488993bSBrad Davis#
599488993bSBrad Davis#		The Explanatory Supplement to the Astronomical
609488993bSBrad Davis#		Ephemeris.
619488993bSBrad Davis#	or
629488993bSBrad Davis#		Terry Quinn, "The BIPM and the Accurate Measurement
639488993bSBrad Davis#		of Time," Proc. of the IEEE, Vol. 79, pp. 894-905,
64*65ec2ae3SXin LI#		July, 1991. <http://dx.doi.org/10.1109/5.84965>
65*65ec2ae3SXin LI#		reprinted in:
66*65ec2ae3SXin LI#		   Christine Hackman and Donald B Sullivan (eds.)
67*65ec2ae3SXin LI#		   Time and Frequency Measurement
68*65ec2ae3SXin LI#		   American Association of Physics Teachers (1996)
69*65ec2ae3SXin LI#		   <http://tf.nist.gov/general/pdf/1168.pdf>, pp. 75-86
709488993bSBrad Davis#
71*65ec2ae3SXin LI#	4. The decision to insert a leap second into UTC is currently
72*65ec2ae3SXin LI#	the responsibility of the International Earth Rotation and
73*65ec2ae3SXin LI#	Reference Systems Service. (The name was changed from the
74*65ec2ae3SXin LI#	International Earth Rotation Service, but the acronym IERS
75*65ec2ae3SXin LI#	is still used.)
769488993bSBrad Davis#
77*65ec2ae3SXin LI#	Leap seconds are announced by the IERS in its Bulletin C.
789488993bSBrad Davis#
79*65ec2ae3SXin LI#	See www.iers.org for more details.
809488993bSBrad Davis#
81*65ec2ae3SXin LI#	Every national laboratory and timing center uses the
82*65ec2ae3SXin LI#	data from the BIPM and the IERS to construct UTC(lab),
83*65ec2ae3SXin LI#	their local realization of UTC.
849488993bSBrad Davis#
859488993bSBrad Davis#	Although the definition also includes the possibility
869488993bSBrad Davis#	of dropping seconds ("negative" leap seconds), this has
879488993bSBrad Davis#	never been done and is unlikely to be necessary in the
889488993bSBrad Davis#	foreseeable future.
899488993bSBrad Davis#
909488993bSBrad Davis#	5. If your system keeps time as the number of seconds since
919488993bSBrad Davis#	some epoch (e.g., NTP timestamps), then the algorithm for
929488993bSBrad Davis#	assigning a UTC time stamp to an event that happens during a positive
939488993bSBrad Davis#	leap second is not well defined. The official name of that leap
949488993bSBrad Davis#	second is 23:59:60, but there is no way of representing that time
959488993bSBrad Davis#	in these systems.
969488993bSBrad Davis#	Many systems of this type effectively stop the system clock for
979488993bSBrad Davis#	one second during the leap second and use a time that is equivalent
989488993bSBrad Davis#	to 23:59:59 UTC twice. For these systems, the corresponding TAI
999488993bSBrad Davis#	timestamp would be obtained by advancing to the next entry in the
1009488993bSBrad Davis#	following table when the time equivalent to 23:59:59 UTC
1019488993bSBrad Davis#	is used for the second time. Thus the leap second which
1029488993bSBrad Davis#	occurred on 30 June 1972 at 23:59:59 UTC would have TAI
1039488993bSBrad Davis#	timestamps computed as follows:
1049488993bSBrad Davis#
1059488993bSBrad Davis#	...
1069488993bSBrad Davis#	30 June 1972 23:59:59 (2287785599, first time):	TAI= UTC + 10 seconds
1079488993bSBrad Davis#	30 June 1972 23:59:60 (2287785599,second time):	TAI= UTC + 11 seconds
1089488993bSBrad Davis#	1  July 1972 00:00:00 (2287785600)		TAI= UTC + 11 seconds
1099488993bSBrad Davis#	...
1109488993bSBrad Davis#
1119488993bSBrad Davis#	If your system realizes the leap second by repeating 00:00:00 UTC twice
1129488993bSBrad Davis#	(this is possible but not usual), then the advance to the next entry
113*65ec2ae3SXin LI#	in the table must occur the second time that a time equivalent to
1149488993bSBrad Davis#	00:00:00 UTC is used. Thus, using the same example as above:
1159488993bSBrad Davis#
1169488993bSBrad Davis#	...
1179488993bSBrad Davis#       30 June 1972 23:59:59 (2287785599):		TAI= UTC + 10 seconds
1189488993bSBrad Davis#       30 June 1972 23:59:60 (2287785600, first time):	TAI= UTC + 10 seconds
1199488993bSBrad Davis#       1  July 1972 00:00:00 (2287785600,second time):	TAI= UTC + 11 seconds
1209488993bSBrad Davis#	...
1219488993bSBrad Davis#
1229488993bSBrad Davis#	in both cases the use of timestamps based on TAI produces a smooth
123*65ec2ae3SXin LI#	time scale with no discontinuity in the time interval. However,
124*65ec2ae3SXin LI#	although the long-term behavior of the time scale is correct in both
125*65ec2ae3SXin LI#	methods, the second method is technically not correct because it adds
126*65ec2ae3SXin LI#	the extra second to the wrong day.
1279488993bSBrad Davis#
1289488993bSBrad Davis#	This complexity would not be needed for negative leap seconds (if they
1299488993bSBrad Davis#	are ever used). The UTC time would skip 23:59:59 and advance from
1309488993bSBrad Davis#	23:59:58 to 00:00:00 in that case. The TAI offset would decrease by
1319488993bSBrad Davis#	1 second at the same instant. This is a much easier situation to deal
1329488993bSBrad Davis#	with, since the difficulty of unambiguously representing the epoch
1339488993bSBrad Davis#	during the leap second does not arise.
1349488993bSBrad Davis#
135*65ec2ae3SXin LI#	Some systems implement leap seconds by amortizing the leap second
136*65ec2ae3SXin LI#	over the last few minutes of the day. The frequency of the local
137*65ec2ae3SXin LI#	clock is decreased (or increased) to realize the positive (or
138*65ec2ae3SXin LI#	negative) leap second. This method removes the time step described
139*65ec2ae3SXin LI#	above. Although the long-term behavior of the time scale is correct
140*65ec2ae3SXin LI#	in this case, this method introduces an error during the adjustment
141*65ec2ae3SXin LI#	period both in time and in frequency with respect to the official
142*65ec2ae3SXin LI#	definition of UTC.
1439488993bSBrad Davis#
144*65ec2ae3SXin LI#	Questions or comments to:
145*65ec2ae3SXin LI#		Judah Levine
146*65ec2ae3SXin LI#		Time and Frequency Division
147*65ec2ae3SXin LI#		NIST
148*65ec2ae3SXin LI#		Boulder, Colorado
149*65ec2ae3SXin LI#		Judah.Levine@nist.gov
150*65ec2ae3SXin LI#
151*65ec2ae3SXin LI#	Last Update of leap second values:   8 July 2016
1529488993bSBrad Davis#
1539488993bSBrad Davis#	The following line shows this last update date in NTP timestamp
1549488993bSBrad Davis#	format. This is the date on which the most recent change to
1559488993bSBrad Davis#	the leap second data was added to the file. This line can
1569488993bSBrad Davis#	be identified by the unique pair of characters in the first two
1579488993bSBrad Davis#	columns as shown below.
1589488993bSBrad Davis#
159*65ec2ae3SXin LI#$	 3676924800
160*65ec2ae3SXin LI#
161*65ec2ae3SXin LI#	The NTP timestamps are in units of seconds since the NTP epoch,
162*65ec2ae3SXin LI#	which is 1 January 1900, 00:00:00. The Modified Julian Day number
163*65ec2ae3SXin LI#	corresponding to the NTP time stamp, X, can be computed as
164*65ec2ae3SXin LI#
165*65ec2ae3SXin LI#	X/86400 + 15020
166*65ec2ae3SXin LI#
167*65ec2ae3SXin LI#	where the first term converts seconds to days and the second
168*65ec2ae3SXin LI#	term adds the MJD corresponding to the time origin defined above.
169*65ec2ae3SXin LI#	The integer portion of the result is the integer MJD for that
170*65ec2ae3SXin LI#	day, and any remainder is the time of day, expressed as the
171*65ec2ae3SXin LI#	fraction of the day since 0 hours UTC. The conversion from day
172*65ec2ae3SXin LI#	fraction to seconds or to hours, minutes, and seconds may involve
173*65ec2ae3SXin LI#	rounding or truncation, depending on the method used in the
174*65ec2ae3SXin LI#	computation.
1759488993bSBrad Davis#
1769488993bSBrad Davis#	The data in this file will be updated periodically as new leap
1779488993bSBrad Davis#	seconds are announced. In addition to being entered on the line
1789488993bSBrad Davis#	above, the update time (in NTP format) will be added to the basic
1799488993bSBrad Davis#	file name leap-seconds to form the name leap-seconds.<NTP TIME>.
1809488993bSBrad Davis#	In addition, the generic name leap-seconds.list will always point to
1819488993bSBrad Davis#	the most recent version of the file.
1829488993bSBrad Davis#
1839488993bSBrad Davis#	This update procedure will be performed only when a new leap second
1849488993bSBrad Davis#	is announced.
1859488993bSBrad Davis#
1869488993bSBrad Davis#	The following entry specifies the expiration date of the data
187*65ec2ae3SXin LI#	in this file in units of seconds since the origin at the instant
188*65ec2ae3SXin LI#	1 January 1900, 00:00:00. This expiration date will be changed
189*65ec2ae3SXin LI#	at least twice per year whether or not a new leap second is
190*65ec2ae3SXin LI#	announced. These semi-annual changes will be made no later
191*65ec2ae3SXin LI#	than 1 June and 1 December of each year to indicate what
1929488993bSBrad Davis#	action (if any) is to be taken on 30 June and 31 December,
1939488993bSBrad Davis#	respectively. (These are the customary effective dates for new
1949488993bSBrad Davis#	leap seconds.) This expiration date will be identified by a
1959488993bSBrad Davis#	unique pair of characters in columns 1 and 2 as shown below.
1969488993bSBrad Davis#	In the unlikely event that a leap second is announced with an
1979488993bSBrad Davis#	effective date other than 30 June or 31 December, then this
1989488993bSBrad Davis#	file will be edited to include that leap second as soon as it is
1999488993bSBrad Davis#	announced or at least one month before the effective date
2009488993bSBrad Davis#	(whichever is later).
2019488993bSBrad Davis#	If an announcement by the IERS specifies that no leap second is
2029488993bSBrad Davis#	scheduled, then only the expiration date of the file will
2039488993bSBrad Davis#	be advanced to show that the information in the file is still
2049488993bSBrad Davis#	current -- the update time stamp, the data and the name of the file
2059488993bSBrad Davis#	will not change.
2069488993bSBrad Davis#
2077fa22f74SXin LI#	Updated through IERS Bulletin C57
208*65ec2ae3SXin LI#	File expires on:  28 December 2019
2099488993bSBrad Davis#
210*65ec2ae3SXin LI#@	3786480000
2119488993bSBrad Davis#
2129488993bSBrad Davis2272060800	10	# 1 Jan 1972
2139488993bSBrad Davis2287785600	11	# 1 Jul 1972
2149488993bSBrad Davis2303683200	12	# 1 Jan 1973
2159488993bSBrad Davis2335219200	13	# 1 Jan 1974
2169488993bSBrad Davis2366755200	14	# 1 Jan 1975
2179488993bSBrad Davis2398291200	15	# 1 Jan 1976
2189488993bSBrad Davis2429913600	16	# 1 Jan 1977
2199488993bSBrad Davis2461449600	17	# 1 Jan 1978
2209488993bSBrad Davis2492985600	18	# 1 Jan 1979
2219488993bSBrad Davis2524521600	19	# 1 Jan 1980
2229488993bSBrad Davis2571782400	20	# 1 Jul 1981
2239488993bSBrad Davis2603318400	21	# 1 Jul 1982
2249488993bSBrad Davis2634854400	22	# 1 Jul 1983
2259488993bSBrad Davis2698012800	23	# 1 Jul 1985
2269488993bSBrad Davis2776982400	24	# 1 Jan 1988
2279488993bSBrad Davis2840140800	25	# 1 Jan 1990
2289488993bSBrad Davis2871676800	26	# 1 Jan 1991
2299488993bSBrad Davis2918937600	27	# 1 Jul 1992
2309488993bSBrad Davis2950473600	28	# 1 Jul 1993
2319488993bSBrad Davis2982009600	29	# 1 Jul 1994
2329488993bSBrad Davis3029443200	30	# 1 Jan 1996
2339488993bSBrad Davis3076704000	31	# 1 Jul 1997
2349488993bSBrad Davis3124137600	32	# 1 Jan 1999
2359488993bSBrad Davis3345062400	33	# 1 Jan 2006
2369488993bSBrad Davis3439756800	34	# 1 Jan 2009
2379488993bSBrad Davis3550089600	35	# 1 Jul 2012
2389488993bSBrad Davis3644697600	36	# 1 Jul 2015
2399488993bSBrad Davis3692217600	37	# 1 Jan 2017
2409488993bSBrad Davis#
2419488993bSBrad Davis#	the following special comment contains the
2429488993bSBrad Davis#	hash value of the data in this file computed
2439488993bSBrad Davis#	use the secure hash algorithm as specified
244*65ec2ae3SXin LI#	by FIPS 180-1. See the files in ~/pub/sha for
2459488993bSBrad Davis#	the details of how this hash value is
2469488993bSBrad Davis#	computed. Note that the hash computation
2479488993bSBrad Davis#	ignores comments and whitespace characters
2489488993bSBrad Davis#	in data lines. It includes the NTP values
2499488993bSBrad Davis#	of both the last modification time and the
2509488993bSBrad Davis#	expiration time of the file, but not the
2519488993bSBrad Davis#	white space on those lines.
2529488993bSBrad Davis#	the hash line is also ignored in the
2539488993bSBrad Davis#	computation.
2549488993bSBrad Davis#
255*65ec2ae3SXin LI#h 	83c68138 d3650221 07dbbbcd 11fcc859 ced1106a
256