首页 >数据库 >mysql教程 >如何在 PHP 和 MySQL 中同步时区?

如何在 PHP 和 MySQL 中同步时区?

Susan Sarandon
Susan Sarandon原创
2024-11-03 11:26:02268浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn