ホームページ > データベース > mysql チュートリアル > PHP と MySQL でタイムゾーンを同期するにはどうすればよいですか?

PHP と MySQL でタイムゾーンを同期するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-03 11:26:02
オリジナル
271 人が閲覧しました

How to Synchronize Timezones in PHP and MySQL?

PHP と MySQL でのタイムゾーンの同期

PHP date() 関数を使用して MySQL に日付を保存する必要があるアプリケーションを開発しています。 NOW() を使用して MySQL 内でこれらの日付を比較し、時差を計算する必要があります。ただし、PHP date() 関数は PHP で定義されたタイムゾーンを使用するのに対し、NOW() は MySQL サーバーで構成されたタイムゾーンを使用します。

この問題を解決するために、次のようなさまざまなアプローチを試みました。

  • date_default_timezone_set('Europe/Paris') は PHP のみに影響します。
  • date.timezone = "Europe/Paris" は PHP に対して分離されたままです。
  • SELECT CONVERT_TZ(now(), ' GMT'、'MET') は空の結果を返します。
  • mysql> SET time_zone = 'Europe/Paris' を実行すると、MySQL コンソールにエラーが表示されます。

最終的に、MySQL タイムゾーンは変更されません。

解決策

手動のコンソール コマンドや php.ini の変更を行わずに、PHP と MySQL のタイムゾーンを同期します:

PHP:

<code class="php">define('TIMEZONE', 'Europe/Paris');
date_default_timezone_set(TIMEZONE);</code>
ログイン後にコピー

MySQL:

<code class="php">$now = new DateTime();
$mins = $now->getOffset() / 60;
$sgn = ($mins < 0 ? -1 : 1);
$mins = abs($mins);
$hrs = floor($mins / 60);
$mins -= $hrs * 60;
$offset = sprintf('%+d:%02d', $hrs*$sgn, $mins);

// Assuming an existing DB connection named $db
$db->exec("SET time_zone='$offset';");</code>
ログイン後にコピー

このアプローチにより、PHP と MySQL の両方が同じタイムゾーンを使用するようになり、日付の保存と比較における不一致が排除されます。さらに、手動でタイムゾーンを設定したり、グローバル構成ファイルを変更したりする必要がなくなります。

以上がPHP と MySQL でタイムゾーンを同期するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート