サマータイム

このところ,国会などでサマータイム制導入に向けた動きも活発になっており, 4月にも法案提出を目指し,成立すれば2007年から施行されるらしいとのこと. 政局絡みで,今回は法案提出断念の模様ですね.

# 余談ですが,本来の英語では "summer time" でなく "daylight saving(s) time" ですね. 米国では "daylight saving(s) time" と表現するが,英国や欧州では "summer time" と表現する, という趣旨のご指摘をある方から頂きました.

で,もし施行されるとなれば Web サーバ運用等への影響も考えなければなりません. CGI 等のプログラムにおいて,日本時間取得の際に C 標準関数の localtime() / localtime_r() や APR 関数の apr_time_exp_lt() などを使用していれば TZ 環境変数を適切に設定すればよく,プログラムの修正は基本的に不要です. そうした関数を使用せず時差計算などを自力で行っているのなら,修正が必要です. Apache 自体は TZ の設定のみで Ok です.

TZ の設定

検討されている法案 によれば,夏時間適用期間は 4月第1日曜日2:00 〜 10月最終日曜日2:00 とのこと. 夏時間適用期間は 3月最終日曜日2:00 〜 10月最終日曜日2:00 らしいです. また,日本標準時が JST と表記されるのに対し夏時間がどのような表記となるのかはわかりませんが, 恐らくは JDT などとなるのではないかと思います.これを基にすれば次のようになります.

TZ=JST-9JDT,M3.5.0,M10.5.0

あるいは,OS がサポートしていれば,ゾーン情報ファイルの設定を利用する方法もあります. 例えば Solaris では /usr/share/lib/zoneinfo/Japan に日本時間の情報が設定されており,

TZ=Japan

と TZ を設定することによりその情報を利用できます./usr/share/lib/zoneinfo/Asia/Tokyo にも同じ情報が設定されており(上記 Japan ファイルとのハードリンクになっている),

TZ=Asia/Tokyo

としても利用できます.Linux や FreeBSD 等でもファイルの場所は異なっても 同様の仕組みはあるかと思います.この場合,OS ベンダがサマータイム制に対応した ゾーン情報ファイルのパッチを提供しそれを適用すれば,TZ の設定はそのままで Ok です.

なお,ゾーン情報ファイルの内容は自分で変更することも可能です.その方法については zic のマニュアル等を参照して下さい.もっとも,サマータイム法の成立から施行までは それなりの期間があるはずなので,その間に OS ベンダがパッチを提供するなり アップデート時に対応するなりするでしょうから,わざわざ自分で変更する必要性は あまりないだろうとは思います.