NEWSOSと閏秒(うるう秒)


現在、世界の標準時は協定世界時(UTC)が採用されています。

また1秒の長さは、セシウム原子の遷位に対応するマイクロ波の
振動数を基準(9,192,631,770回)として定義されています。
これを、国際原子時と呼びます。
しかし、原子の振動数に対し惑星の運動という物理現象を基準と
した物では、安定性が異なります。

協定世界時では、地球の公転周期を1年、自転周期を1日とする
平均太陽時と、正確な1秒としての国際原子時の2つの側面を持ちます。
それは、平均太陽時による時刻と国際原子時による時間です。

原子時による1秒は1970年の平均太陽時の1秒を基準として固定
されていますが、日常生活で使われている平均太陽時には、
地球の自転周期を元とする変動があります。

その為、国際原子時(セシウムによる秒を積み重ねた時間)と、
平均太陽時との誤差を基準内に納める補正が行われます。
(誤差 +-0.9秒以内)
これが、閏秒であり今までに22回挿入されています。

NEWSOSでは、閏秒に対応しておりますが、補正値は15秒であり
それは、1990年1月1日の閏秒挿入までを意識しているようです。
NEWSOSリリース後に挿入された閏秒に関しては更新されません。

また、閏秒はlocaltimeの処理と絡んでいるため
gmttime() とlocaltime()の比較から、時差の検出をしている場合
+0900 を導けず +0859 となる場合があります。
(15秒が、分の桁に影響を与える場合、毎分45秒から59秒まで)

また、閏秒補正が生きているとxntpで同期しているにもかかわらず
15秒ずれるという現象が発生します。

閏秒補正を無効とするには
/usr/etc/tz/Makefile の中で leapseconds =の行が
LEAPSECONDS=     leapseconds

となっているところを

LEAPSECONDS=     /dev/null

に変更し

/usr/etc/tz で
make std
make

とすれば変更可能です。

Jul.20.2000
NEWS World