「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP と MySQL でタイムゾーンを同期するにはどうすればよいですか?

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

2024 年 11 月 17 日に公開
ブラウズ:259

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 = 「ヨーロッパ/パリ」は PHP に対して分離されたままです。
  • SELECT CONVERT_TZ(now(), 'GMT', 'MET') は空の結果を返します。
  • mysql> SET time_zone = 'ヨーロッパ/パリ' MySQL コンソールでエラーが表示されます。

最終的には、MySQL タイムゾーンはそのままになります。変更なし。

ソリューション

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

PHP:

define('TIMEZONE', 'Europe/Paris');
date_default_timezone_set(TIMEZONE);

MySQL:

$now = new DateTime();
$mins = $now->getOffset() / 60;
$sgn = ($mins d', $hrs*$sgn, $mins);

// Assuming an existing DB connection named $db
$db->exec("SET time_zone='$offset';");

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3