日本時間

環境変数を使った時間の取得

時間を取得する方法で

$ENV{'TZ'}="JST-9";
@date = localtime(time);

と、すればいいのですが、注意点が1つありました。

一番最初にlocaltime関数を呼び出した時点の環境変数が
そのプログラム終了まで維持される。
(localtime関数の呼出し後環境変数を変更しても反映されない)




テスト

環境変数をGMTにセットしてから実行しました。
timetest1.pl
timetest2.pl
timetest3.pl

テスト実行(1999/12/18 20:21(日本時間)に実行)
nk02:~/$ export TZ="GMT"

nk02:~/$ timetest1.pl
1999/12/18 11:21:51
1999/12/18 11:21:51
1999/12/18 11:21:51
1999/12/18 11:21:51

nk02:~/$ timetest2.pl
1999/12/18 13:21:55
1999/12/18 13:21:55
1999/12/18 11:21:55

nk02:~/$ timetest3.pl
1999/12/18 20:21:58
1999/12/18 11:21:58


日本時間だけ求めるなら問題無し

CGIを始めた頃gmtime関数があるのに気がつかずに
一生懸命localtime関数で日本時間とGMTを求めようとしていました。
その時に疑問に思ったことをテストしてみました。
テストでやったみたいに、JST-9 と JST-2 を求めたいというので
無ければ、あまり問題がないみたいですね。