同步 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中文网其他相关文章!