#1022(スミコ氏)の書き込みを引用します:
>はじめまして。アクセスログのCGI版を使っているのですが、時刻が外国
>サーバのため15時間遅れてしまいます。どのように書き足したらよいの
>でしょうか?どうかお教えください。よろしくお願いします。
access3.cgiの中に時間表記を作成するサブルーチンがあります。
sub gmt_date { #HTTPプロトコルで定義された標準的な時間表記を作る
local($t) = @_;
@wdays = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
@month = ("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
($sec, $min, $hour, $day, $mon, $year, $wday) = gmtime($t);
return sprintf("%s, %02d %s %04d %02d:%02d:%02d GMT",
$wdays[$wday], $day, $month[$mon], $year+1900, $hour, $min, $sec);
}
この中の
($sec, $min, $hour, $day, $mon, $year, $wday) = gmtime($t);
を
($sec, $min, $hour, $day, $mon, $year, $wday) = gmtime($t + 9 * 60 * 60);
として下さい。(黄色が該当行で赤色が追加部分です)
少々うんちくをば・・・
(15時間のずれって、なんかおかしい様な気がしますが・・・)
gmtime関数はグリニッジ標準時(世界標準時)を取得しますが、日本とは9時間(32400秒)のずれがあるはず。
$tの後ろの「+ 9 * 60 * 60」でグリニッジ標準時と日本標準時の9時間(32400秒)の時差を加算修正しています。
時間の誤差分の指定は秒で行って下さい。