6

次のコードを想定します。

<?php
date_default_timezone_set('UTC');
$time = gmmktime(14, 50, 0, 5, 12, 2013);
echo date('Y-m-d H:i:s O', $time).'<br />';
echo gmdate('Y-m-d H:i:s O', $time).'<br />';

date_default_timezone_set('GMT');
$time = gmmktime(14, 50, 0, 5, 12, 2013);
echo date('Y-m-d H:i:s O', $time).'<br />';
echo gmdate('Y-m-d H:i:s O', $time);
?>

私のローカルサーバーでは、次の出力が得られます。

2013-05-12 14:50:00 +0000
2013-05-12 14:50:00 +0000
2013-05-12 14:50:00 +0000
2013-05-12 14:50:00 +0000

しかし、本番環境では、同じコードで次が生成されます。

2013-05-12 10:50:00 -0400
2013-05-12 14:50:00 +0000
2013-05-12 14:50:00 +0000
2013-05-12 14:50:00 +0000

マシンの時間を変更しても、出力にはまったく影響しません。

いくつかの情報:

$ date +%Z
GMT
$ date +%z
+0000
  • PHP 5.3.25 (cli) (ビルド: 2013 年 5 月 11 日 09:54:00)
  • CentOS リリース 5.9 (最終版)
4

2 に答える 2

1

phpinfo() は "Olson" Timezone Database Version を 0.system と表示したので、コマンドを使用しました

pecl upgrade timezonedb

と追加

extension=timezonedb.so

php.iniに

サーバーを再起動した後、問題は新しいタイムゾーン DB バージョン 2013.3 で解決されました。

于 2013-05-12T21:11:32.317 に答える
0

それはコードについてではないかもしれません..

「O」が時間単位のグリニッジ時間 (GMT) との差である場合.. 運用コンピュータの時間設定が正しく設定されていない可能性があります..

于 2013-05-12T15:27:11.167 に答える