2009-06-09 19 views
8

私は、MySQLとのcurrent_timestampを使用する場合、私は正確な時刻を取得するが、私はMySQLの時間とPHPの時間ではない同じ

$mysqldate = date('Y-m-d H:i:s');

を使用する場合、私は時間の遅延(例えば、4とで日付を取得します:42 PMは5:42 PMです)。 両方の機能がサーバーの現地時間を使用していることを理解しました。

ありがとうございました。

+1

あなたのMySQLとPHPがオンになっている特定しています同じサーバー、そうですか?いくつかのホストはMySQLを別のサーバに置きます。 – ceejayoz

答えて

9

システム時刻から、php.iniのからそれを取りますzoneファイルの/ usr/share/zoneinfo /からのゾーンファイルの読み込み。アプリケーションはこれをデフォルトとして使用します。

PHPは、カップルの異なる方法でこれを上書きすることができます。php.iniで

  1. date.timezone
  2. は、例えば、TZ環境変数を設定しますputenv("TZ=US/Central");
  3. date_default_timezone_set機能(PHPで> = 5.1.0)

MySQLはすぐに接続した後、次のクエリを実行することによって、これをオーバーライドすることができます。

SET time_zone = 'US/Central' 
1

は多分あなたのPHPサーバは異なるタイムゾーンにありますか、それは時間のルールを節約異なるロケールと夏時間を使用しています考えています。 phpのロケール設定があります

+0

サーバーのコンピュータに表示される既定のサーバー時間をPHPに与えるにはどうすればよいですか? PHPのdate.timezoneが設定されていません – daniel

2

は、それがないシンボリックリンクやコピーのいずれかになりますグローバルシステム時刻は、/ etc/localtimeのファイル経由で設定されます