サマータイム、うるう秒とタイムスタンプの関係

世界標準時(UTC)、日本標準時(JST)、サマータイム、うるう秒・・・いずれも時刻に関わる単語ですが、それぞれはタイムスタンプどのような関係にあるかを簡単に説明いたします。

サマータイムとうるう秒

サマータイムは、夏の間だけ日本標準時の時計を1時間進めるものです。1時間進めることによるメリット、デメリットは様々ですが、一般的には、夏には朝7時、8時ですでに十分な太陽高度があるため、その時間を有効に使おうという発想に基づきます。日が昇るとともに起きて生活活動を始めるという昔ながらの生活リズムを制度的に再現しているものとも言えます。現在、日本では実施されていませんが、ヨーロッパを含む多くの国で実施されています。総じて夏冬の日照時間に大きな差がある高緯度の国々での実施例が多いようです(日本でも緯度が高い北海道で実験的に行われました)。

一方、うるう秒はほとんどの場合、生活との関連性は発生しません。
うるう秒は地球の自転周期に基づく時刻(世界時)と、原子時計という非常に正確な時計に基づく時刻(協定世界時:UTC)とのずれを調整するためのもので、数年間に一度程度の頻度で発生します。最近では2009年1月1日0時0分0秒に1秒を追加するうるう秒が発生しました。地球の自転周期はほぼ一定ですが、現在の測定技術を用いると微妙に回転が遅くなったり速くなったりすることが観測できます。その調整を行うのがうるう秒というわけです。うるう秒は過去26回発生(2015年7月1日が最新)しており、最新の情報は国立研究開発法人情報通信研究機構に記載されています。

国立研究開発法人情報通信機構 2015年年7月1日は1日が1秒長かった!

うるう秒によるタイムスタンプ局の時計調整

RFC3161によるタイムスタンプでは、タイムスタンプ時刻は協定世界時(UTC)で打刻されます。従って、うるう秒発生時には、タイムスタンプを打刻している時計に対して1秒を調整する作業が行われます。うるう秒の発生時、
2008年12月31日23時59分60秒(!)
という時刻が発生したり
2008年12月31日23時59分59秒が無くなる
ということが発生します(大みそかのカウントダウンでは大騒ぎになるかもしれません)。59分60秒という時刻は、一般的な時計には存在しない時刻ですので、正常に表記できないコンピュータシステムが存在する可能性があります。このため、タイムスタンプ局では、この時間帯には一時サービスを停止させ59分60秒のタイムスタンプを打刻しないようにする例があります(弊社サービスも左記に当てはまります)。
このようにタイムスタンプ局ではUTCとの正確に同期させた時計システムを用いるため、タイムスタンプに表記された時刻をうるう秒の度にユーザが1秒足したり、引いたりする必要はありません。

サマータイムによるタイムスタンプ局の時計の調整

では、サマータイムが日本で実施された場合、タイムスタンプはどのようになるのでしょうか。
まず、サマータイムがない時に日本時間で2009年7月1日0時0分0秒にタイムスタンプを生成すると
20090630150000Z
と打刻されます(末尾のZはズールー時刻のZであり、いわゆるグリニッジ標準時、UTCを意味します)。日本標準時はUTC+9時間であるため、日本時間から9時間引いた時刻がUTCで打刻されたタイムスタンプ時刻になります。RFC3161によるタイムスタンプはUTCで打刻されているため、タイムスタンプトークンを開いてみた場合には、6月30日の15時となるのです。
サマータイムがある時に日本時間で2009年7月1日0時0分0秒にタイムスタンプを生成すると
20090630140000Z
と打刻されます。サマータイムによって日本標準時がUTC+10時間となるため、日本時間から10時間引いた時刻がUTCで打刻されたタイムスタンプ時刻になります。
このように記述するとサマータイムによって、タイムスタンプ時刻が大きな影響を受けるようにも見えますが、実際はそうではありません。
サマータイムがうるう秒と異なるのは、サマータイムの有無によってタイムスタンプ局での時刻調整が発生しないことです。サマータイムはあくまでも、UTCに比べて日本時間が何時間進んでいるか(遅れているか)が変わるだけですので、UTCそのものの時計の進み具合には何の影響もありませんのでタイムスタンプ局の時計が調整されることもないのです。
一方、うるう秒はUTCの時計そのものを調整するものですので、タイムスタンプ局の時計を調整しなければなりません。
同様に、サマータイムが終了するときには日本時間は1時間戻ることになりますが、その際にもUTC時刻が変わるわけではありませんので、タイムスタンプ局内で時計の調整は行われません。

サマータイムが実際に導入されたら

サマータイムが実際に日本で導入されたとしても、ここまで説明しましたようにタイムスタンプは基本的に影響は受けません。しかし、タイムスタンプを用いるアプリケーションをUTCではなく、日本時刻(ローカル時刻)を基準に動作させている場合は、注意が必要です。
パソコン用のOSでは、通常、日本時刻で表示するためにタイムゾーン設定を行っています。Windows XPでは「日付と時刻のプロパティ」にある「タイムゾーン」タブでパソコンが稼働しているタイムゾーンを指定しています(WindowXPでは、インストール時に設定しているので、普段は調整する必要がない設定です)。
日本では「(GMT+09:00)大阪、札幌、東京」というタイムゾーンに設定されています。

タイムゾーン1

試しに、タイムゾーンを「(GMT-06:00)中部標準時(米国およびカナダ)に設定してみると、「自動的に夏時間の調整をする」というチェックボックスが表示されることが分かります。

タイムゾーン2

日本では、タイムゾーンが規定されていないので、チェックボックスがでないのですが、逆にいえば、タイムゾーンが制度化されてもパソコンのOSなどが対応していないと、一台一台タイムゾーンの設定をしていく必要が出てくるかもしれません。実際には制度化された時点でWindows Updateなどの方法でサマータイム対応されるものと思われますが、ネットワークに接続されていない企業内サーバや、ファームウェアの自動更新が行われないネットワーク機器などでは、ローカル時刻での稼働が前提となっていると、サマータイム時に時刻が1時間進んだり、遅れたりすることで問題が発生することもあるかもしれません。
例:サマータイム終了時に1時間戻ることで、同じ時刻が2回発生する。この時刻にバッチスケジュールを組んでいた場合に、本来1度しか実施しないバッチを2回実施することになる。