hnwの日記

日付と時刻の豆知識 (2)うるう秒とコンピュータ

うるう秒とは、地球の自転と時刻とのずれを補正するために、特定の日を1秒だけ長くしたり短くしたりして調整するものです。私たちが日常的に利用している時刻は原子時計を基準にしていますが、地球の自転する速度は僅かながら変化し続けているので、観測に基づいて調整を入れる必要があるのです。これまで、基準値以上のずれが観測されるたびに実施されてきました。


このうるう秒は1972年から2010年までの間に24回実施されており、いずれも1秒長くする補正でした。一番最近では2008年12月31日が1秒長くなっており、UTCで23:59:60という時刻が挿入されました。

うるう秒UNIXタイムスタンプ

このうるう秒をコンピュータ上では無視することが多いようです。多くのOSにはうるう秒をサポートする機能があるのですが、デフォルトで無効になっているのが普通です。また、UNIXタイムスタンプについても、通常うるう秒を含めません。たいていのシステムでは、うるう秒を正確に扱うメリットよりも、うるう秒が原因でバグを引き起こすリスクのほうが大きいということなのでしょう。


このように、時刻としてのうるう秒については無視してしまうことが多いはずです。

うるう秒と日付文字列

UNIXタイムスタンプの場合と異なり、日付の文字列表記についてはうるう秒の考慮が必要です。というのも、紹介した通り「2008-12-31 23:59:60 UTC」は正しい日付文字列です。日付文字列を受け取るシステムであれば、これを受け入れる仕様にしておく方が事故は減ると考えられます。この場合、時刻として正しく扱うかどうかとは別問題であることに注意してください。

続きを読む