同步PHP 和MySQL 中的時區
您正在開發一個需要使用PHP date() 函數在MySQL 中儲存日期的應用程式。有必要使用 NOW() 在 MySQL 中比較這些日期來計算時間差。但是,PHP date() 函數使用 PHP 中定義的時區,而 NOW() 使用 MySQL 伺服器中配置的時區。
為了解決這個問題,您嘗試了多種方法:
最終MySQL時區維持不變。
解決方法
同步PHP 和MySQL 中的時區,無需手動控制台命令或修改php.ini:
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中文網其他相關文章!