11

次のスクリプトは、呼び出した後に間違った時間を返しますdate_default_timezone_set("UTC")

<?PHP   
    $timestamp = time();
    echo "<p>Timestamp: $timestamp</p>";

    // This returns the correct time
    echo "<p>". date("Y-m-d H:i:s", $timestamp) ."</p>";


    echo "<p>Now I call 'date_default_timezone_set(\"UTC\")' and echo out the same timestamp.</p>";
    echo "Set timezone = " . date_default_timezone_set("UTC");

    // This returns a time 5 hours in the past
    echo "<p>". date("Y-m-d H:i:s", $timestamp) ."</p>";

?>

サーバーのタイムゾーンはBSTです。したがって、'date' への 2 回目の呼び出しでは、最初の呼び出しより 1 時間遅れた時間が返されるはずです。実際には、最初の時刻から 5 時間遅れて返されます。

サーバーはもともと EDT タイムゾーン (UTC -4) でセットアップされていたことに注意してください。それはBST(UTC + 1)に変更され、サーバーが再起動されました.

これが PHP の問題なのか、サーバーの問題なのかわかりません。

4

3 に答える 3

8

これはほぼ確実に php のエラーではなく、ローカルのタイムゾーン設定のエラーです。

ほとんどの場合、システム全体のタイム ゾーンを実際に変更したのではなく、対話型ディスプレイのタイム ゾーンのみを変更しました。/etc/localtimeあなたが期待するものと一致することを確認してください。Debian システムでは、tzselect を (スーパーユーザー権限で) 実行して、システム全体のタイムゾーンを設定できます。

タイムゾーンを設定した後、時計をリセットする必要がある場合があります。多くのシステムでは、これは時間の経過とともに自動的に行われるはずですが、 を実行して手動で行うこともできますntpdate -u pool.ntp.org

于 2012-04-13T11:24:03.353 に答える
2

あなたの国の正しいタイムゾーンについては、PHPマニュアルを確認してください。次に、date_default_timezone_set () 関数で設定します。明確にするために、ここで説明しましたhttp://t2techblog.com/php-a-simple-function-for-getting-the-current-nigeria-local-time/

于 2015-06-18T01:28:39.333 に答える