街中で見かけて「グッときた人」の思い出

基礎的な質問ですみません。
-------------------------------------------------
my $time1 = timelocal(0,0,9,1,1-1,1970-1900);

my $time2 = timelocal(0,0,10,1,1-1,1970-1900);

my @ltime = localtime(0);
my $time3 = sprintf("%d年%d月%d日%02d時%02d分%02d秒",
$ltime[5]+1900,$ltime[4]+1,$ltime[3],$ltime[2],$ltime[1],$ltime[0]);

print<<"EOM";
1970年1月1日9時00分00秒のエポック秒は $time1 です。

1970年1月1日10時00分00秒のエポック秒は $time2 です。

エポック秒 0 は $time3 です。
EOM
------------------------------------------------
と書きます。結果は、
------------------------------------------------
1970年1月1日9時00分00秒のエポック秒は -3600 です。

1970年1月1日10時00分00秒のエポック秒は 3600 です。

エポック秒 0 は 1970年1月1日09時00分00秒 です。
------------------------------------------------
となります。なぜこのように矛盾するのでしょうか。
私が正しく理解できていないだけでしょうか。
教えてください。お願いします。

A 回答 (3件)

サーバのタイムゾーン設定でlocaltimeは違うと思います。


gmtimeは世界共通のグリニッジ世界標準時GMTです。

サーバの設定でGMTやJSTなどさまざまでしょう。

この回答への補足

お答えいただいてありがとうございます。しかし、私の質問の意図とは違う答えのようです。

サーバーとPCの間で時間が食い違ってるという意味ではなく、私のPCで実行したときの結果がおかしいのです。

私のPCで
my $time = timelocal(0,0,9,1,1-1,1970-1900);
と書けば、$time に -3600 が返されます。

my $time = timelocal(59,59,9,1,1-1,1970-1900);
と書けば、$time に -1 が返されます。

my $time = timelocal(0,0,10,1,1-1,1970-1900);
と書けば、$time に 3600 が返されます。

最初は私の理解不足かと思ったのですが、そうではないようなので、ApachかPerlがおかしくなっているのか、それともわたしのPCの環境ににPerlと相性が合わない何かがあるのかだと思っています。
なので、PCにApacheとPerlを再インストールしてみようと思っています。

せっかくお答えいただいたのにすみません。

補足日時:2005/02/21 22:15
    • good
    • 0

1970年1月1日9時00分00秒のエポック秒は 0 です。


1970年1月1日10時00分00秒のエポック秒は 3600 です。
エポック秒 0 は 1970年1月1日09時00分00秒 です。
ウチもuse Time::Local;
で上記のような結果になりました。

この回答への補足

テストしていただいてありがとうございます。
iswebのレンタルサーバに置いて実行したら、ちゃんと

1970年1月1日9時00分00秒のエポック秒は 0 です。
1970年1月1日10時00分00秒のエポック秒は 3600 です。
エポック秒 0 は 1970年1月1日09時00分00秒 です。
となりました。

PCにインストールしたperlがおかしくなってるのか?
あしたperl再インストールしてみましょう。

補足日時:2005/02/21 01:29
    • good
    • 0

不思議ですね。

ウチの環境では、

use Time::Local;
print timelocal( 0, 0, 8, 1, 0, 70); # => -3600
print timelocal( 0, 0, 9, 1, 0, 70); # => 0
print timelocal( 0, 0, 10, 1, 0, 70); # => 3600

となりましたけれど。
もうちょっと調べてみますが…。

この回答への補足

あらら?
ご回答ありがとうございます。
不思議?今PCでやっていますので、サーバーにおいてテストしてみます。

補足日時:2005/02/20 23:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!