Re: 時差修正が狂ってしまいました


[ コメントを書く ] [ BBS ] (PR) [レンタルサーバー]

1999-4-06 11:18:26 たかの

Re: 時差修正が狂ってしまいました [中川 靖彦] へのコメント 1999-4-06 02:53:57

] 突然localtimeが変わってしまうなんてことはあるんでしょうか?

「突然」ということはありません。サーバ管理者がタイムゾーン設定をいじったんでしょう。
サーバのdefault locale自体が変更されているかもしれませんね。

] やってみましたが、やはりあいませんでした。

gmtime(time);

$ENV{'TZ'} = 'JST-9';

のどちらを試したのでしょうか?

gmtime()は、GMT(国際標準時)での時刻を取得する関数で、
(サーバの設定さえ間違っていなければ)どんなタイムゾーン設定がされていても
同じ値がかえってくるようになっています。

localtimeは、タイムゾーン設定に従って(そのサーバの所在地の)時刻を取得します。
このタイムゾーン設定を、(自分のPerlスクリプトだけ)日本時間として扱って
しまおうというのが$ENV{'TZ'} = 'JST-9'です。

中川さんの場合、
localtime(time + XXX);
として、XXXの値で強引に時差を調整しているようですが、これはあまりよろしくありません。
このワザを使う必要があるのは、サーバ時刻が明らかに間違っている場合のみです。

柿花さんのように
> $ENV{'TZ'} = "JST-9";
> ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
として、それでも誤差が出る場合は

localtime(time);

localtime(time + XXX);

として誤差を調整するのが「お作法」です。

が、「お作法」を使わなくてはならないようなサーバでは、とても管理に信頼を
おけませんので、とっととサーバを移ったほうがよいと思います。



コメント:


名前:
E-Mail:
タイトル:
リンク先:
リンク先のタイトル:
画像のリンク:

メッセージ

今年の元号は? (例:大正)