以前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 | ![]() |
1202回 | 974回 | 9回 | 2007-12-20 10:45:22 |
コメント(3件)
ちなみに、getdate()で得られる時刻の値も同じように狂っていました。
使用している OS、CPU(32bit or 64bit)は何でしょうか?
PHP の設定はどのようにしましたか(自マシンでコンパイル)?
http://php.morva.net/manual/ja/ref.datetime.php#ini.date.timezone
のあたりの設定を確認してみてはと思いますが、
根本的に時間関数が正常に動作していない可能性もありそうです。
php.iniのdate設定を確認してみましたところ
date.timezoneは"Etc/GMT+9"となっていました。
(date_default_timezone_get()の結果とほぼ同じ)
64bitのIntelCPU上でOSは32bit版のWindowsServer2003を入れて使っています。
システム時刻を変更してみると、date('H')の結果は変更した時間分ずれた表示がなされます。
ご指摘のとおり、時間関数のエンジンが何かおかしくなってしまっているような感じがします。
バイナリモジュールが壊れてしまったでしょうか...