アクセスログの時差を修正するには?

[上に] [前に] [次に]
denbo 2000/04/04(火) 14:56:49
アクセスログの時差を修正したいのですが、CGIをどのように書き換えたらよいのか分からなくて困っています。
表示は12時間遅れになってしまいます。
説明に
$TimeDiff  = 0; # 時間差が有る場合指定。(サーバ側からみて[秒])
と書いてあります。

# ここでのみ使う。現在の日付---------------------------
($mday,$mon,$year) = (localtime(time+$TimeDiff))[3..5];

上記の部分を修正するのだと思うのですが、どこをどうしたらいいのかわかりません。。
どなたか教えて下さい。

たれ 2000/04/04(火) 15:13:07
timeは1970/01/01の00:00.00から経過した秒数を返してきますので
(プラットフォームによって違うらしいです)
$TimeDiffには、秒数をセットしてやります。

$TimeDiff=12*60*60;

みたいな感じで。

denbo 2000/04/04(火) 15:49:55
>たれさん
早速のお返事ありがとうございました。
それで、大変申し訳ないのですが、秒数をセットするというのは、
1970/01/01の00:00.00から現在まで経過した秒数を計算して記入するということなのでしょうか?本当に初心者でご迷惑をおかけしますが、どうぞよろしくお願い致します。

たれ 2000/04/04(火) 15:59:22
>1970/01/01の00:00.00から現在まで経過した秒数を計算して記入するということなのでしょうか?
あ、前口上なのでいつからというのは気にしないでいいです(^^;

  1970/01/01の00:00.00〜現在

の間の秒数をtimeは返してきます。
その値をlocaltimeが解釈して年数
や日付を返してくれるわけです。

ああ、ごめんなさい、説明の仕方が悪いですね。
つまり、localtimeに、timeの値を渡すときに

  timeの値に12時間分の秒数を足したら、12時間進んでいる

ということです。
ややこしい書き方で申し訳ないですが、わかりづらかったら
補足しますので。

姫月統太 [E-Mail] [HomePage] 2000/04/04(火) 16:03:42
# 元のコード
($mday,$mon,$year) = (localtime(time+$TimeDiff))[3..5];

# 書き換え後のコード
($mday,$mon,$year) = (gmtime(time+9*60*60))[3..5];

サーバの時差に関係なく、これで解決します。

gmtimeは世界標準時ですから、+9時間すれば日本時間になるわけです。
サーバの時差分だけ調整するなんて、そんなわけの分からんことする必要はありません(笑)

なんで最初からこの方法使わないのか疑問なんですけどね。

denbo 2000/04/04(火) 18:56:35
>たれさん、姫月統太 さん
どうもありがとうございました。
早速、いろいろ試してみます。
また結果報告しますね。本当にありがとうございます。

[上に] [前に] [次に]