PHP(ZendCore2)の日時表現(date関数)で質問があります。


以前php4.4.2で動いていたスクリプトがあり
Date('H')と表現すると、24時制の現在時刻を取得することが出来ました。
(このとき、特に時刻関係のiniファイル設定をいじった記憶はありません。)

ZendCore2(PHP 5.2.1相当)に同じスクリプトを移植したのですが、
こちらでは、なぜか[日本時間(JST)の現在時刻]-18時間 の値が表現されます。
(実際の時間が21時だと、"03")
date_default_timezone_get()で設定されているタイムゾーンを得ると"GMT+9"でした。
また、date_default_timezone_set('GMT')でタイムゾーンを設定すると
[日本時間(JST)の現在時刻]+91時間 (実際の時間が21時だと、"112")が、
date_default_timezone_set('GMT+1')や'GMT+2'、'GMT-1'など+-を付加すると
どんな値にしても[日本時間(JST)の現在時刻]-18時間(設定しないときと同じ)で、
date_default_timezone_set('EST')では、+86時間が表現されてしまいます。

php5では、何か設定やスクリプトコードを変更しなくてはならないのでしょうか?

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2007/12/25 21:15:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 ffmpeg 1202 974 9 2007-12-20 10:45:22
  • id:HISI
    年月日、分秒は問題ありません。
    ちなみに、getdate()で得られる時刻の値も同じように狂っていました。
  • id:Mook
    現象だけを見るとコードではなく PHP の設定の問題のように見えます。

    使用している OS、CPU(32bit or 64bit)は何でしょうか?
    PHP の設定はどのようにしましたか(自マシンでコンパイル)?

    http://php.morva.net/manual/ja/ref.datetime.php#ini.date.timezone
    のあたりの設定を確認してみてはと思いますが、

    根本的に時間関数が正常に動作していない可能性もありそうです。
  • id:HISI
    遅くなりました。どうも有り難う御座います。

    php.iniのdate設定を確認してみましたところ
    date.timezoneは"Etc/GMT+9"となっていました。
    (date_default_timezone_get()の結果とほぼ同じ)
    64bitのIntelCPU上でOSは32bit版のWindowsServer2003を入れて使っています。
    システム時刻を変更してみると、date('H')の結果は変更した時間分ずれた表示がなされます。

    ご指摘のとおり、時間関数のエンジンが何かおかしくなってしまっているような感じがします。
    バイナリモジュールが壊れてしまったでしょうか...

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません