うるう秒
Leap second
漢字で書く場合は「閏秒」
2035年以降うるう秒は廃止されることになった。
システム的に対応が困難であるため。既に複数のトラブルが発生している。
うるう秒とは何か?
元々は1秒は地球の自転と公転を天文学的な計測をした上での1日の長さを元に、24 * 60 * 60 = 86400 で割ったもの。
天文学的にはある日の太陽の南中(太陽が最も高い場所に見えたとき)から次の日の太陽の南中までが1日。これは太陽時と呼ばれる。
日によって異なるので平均を取る。これは平均太陽時と呼ばれる。
これを元に、グリニッジ標準時が決まった。
グリニッジ天文台を経度0として、東西で180度の経度が決まり、そこから時差を求める。
さらに正確にするために、恒星が子午線を通る時の時刻を使うようになった。これが世界時となる。
地球の自転、公転の速度は実は一定していない。また地球は歳差運動をしているために南中の位置もずれる。
正確な時間を計測しようとすると、1秒の長さをもっと固定的な現象で決める必要がある。
固定的な現象として現在はセシウム133の共鳴周波数が使われる。
セシウム133に特定の周波数の電磁波を当てると、エネルギーを受けた電子の軌道が1つ上に遷移する。電子が再び元の軌道に戻ると、同じ周波数の光を出す。この周波数は常に一定であることが知られている。
周波数とは一定時間における波が上下する回数を意味する。つまり、波の回数で時間を計測できる。
この現象を使った時計が原子時計と呼ばれる。
原子時計は「その場所」での正確な時間を計測することができる。
それでも相対性原理により速度と重力(加速度)の強さで時間が遅れてしまう。
このため、複数の原子時計で、地上の高さによる重力の補正を加えた上で、相加平均をして、地球の現在時刻を求めたものが国際原子時(TAI)と呼ばれる。
この国際原子時と、天文学的に求められる時刻(UT2)とのズレが1秒以内になるように補正を加えたのが世界協定時(UTC)で、その加える補正時間がうるう秒になる。
1秒の長さは、国際原子時(TAI)と世界協定時(UTC)とは同じである。
正確だからと国際原子時(TAI)をそのまま使うと太陽の南中の時刻が12時からずれていってしまう。つまり人間の地球上での日常生活としての実用性のためには世界協定時(UTC)を使う必要がある。
うるう秒は厳密にはUTC上の年中(6月30日23:59:59)年末(12月31日23:59:59)の後に1秒追加(60秒とする)、または1秒削除(58秒まで)となる。
1秒追加される場合、12月31日23:59:60
1秒削除される場合、12月31日23:59:58 までしかなく、次が1月1日00:00:00 になる。(一度も実施されたことがない)
うるう秒の実用上の実施方法は運用に任されている。
多くのシステムでは、イレギュラーなうるう秒の処理を避けるため、わずかに時間を進めたり遅らせたりして対処している。
NTT の時報では、うるう秒挿入時に、100秒前から1/100秒づつ伸ばしている。
現在、地球の自転が早まっていて、負のうるう秒が必要になるかもしれないと懸念されている。
一度も実施されたことがないため、どんなトラブルが起こるか分からない。
そもそもTAI 0秒以前の過去の正確な時刻は分からない。
当時の自転速度も分からないので算出することもできない。
1日の時間は86400秒として単純計算するしかない。
TAI の0秒は、1959-01-01
UTC との補正は 1972-01-01 からうるう秒方式になり、その時に TAI - UTC = 10秒と定められた。それ以前は補正値による計算式で求める必要がある。
1961-01-01 から 1961-08-01 までは TAI - UTC = 1.4228180 + (JD - 2437300.5) × 0.001296
1.4228180 + (MJD - 37300.) x 0.001296
参考
うるう秒の取り扱いの問題
うるう秒の挿入時を正しく表記すると、秒の位が60秒になることがある。これが解釈できない時間ライブラリが大半である。
「うるう秒を含んだ経過時間」(TAI基準)と「うるう秒を含んでいない経過時間」(UTC基準)にはズレがある。
うるう秒を含んだ経過時間は、1日の時間=86400秒で割っても、うるう秒の分だけズレがある。このズレはうるう秒の実施済みリストに依存するので、リストの検索が必要になる。
実施済みのうるう秒のリストの取得方法
2017年1月1日(2016年12月31日の23:59:60)の 3692217600 はNTPによる1900年1月1日 0時0分0秒 (UTC)からの「うるう秒を含まない」積算秒数になる。隣に書いてある秒数がうるう秒によるTAIとのズレ。
3692217600 37 # 1 Jan 2017
UTC から TAI への換算
TAIは1958年1月1日0時からの秒数
1958年1月1日0時はNTP時間で1,830,297,600秒目
NTP時間をTAIに換算する場合
3644697600 36 # 1 Jul 2015
3692217600 37 # 1 Jan 2017
TAI = 3692217599 + 36 - 1830297600
TAI = 3692217600 + 37 - 1830297600
Wikipedia のうるう秒の解説
うるう秒の実施日(UTC基準)
table:leaptime_date
1 1972-06-30
2 1972-12-31
3 1973-12-31
4 1974-12-31
5 1975-12-31
6 1976-12-31
7 1977-12-31
8 1978-12-31
9 1979-12-31
10 1981-06-30
11 1982-06-30
12 1983-06-30
13 1985-06-30
14 1987-12-31
15 1989-12-31
16 1990-12-31
17 1992-06-30
18 1993-06-30
19 1994-06-30
20 1995-12-31
21 1997-06-30
22 1998-12-31
23 2005-12-31
24 2008-12-31
25 2012-06-30
26 2015-06-30
27 2016-12-31
参考