我通过PHP获得的时区是UMT
,使用以下代码:
$timezone = date_default_timezone_get(); // UTC
echo "The current server timezone is: " . $timezone."<br />";
echo date('Y-m-d H:i:s'); // 2015-04-10 00:08:05
MySQL给我pkt
作为我的系统时区和时间2015-04-10 05:14:38
SELECT @ @system_time_zone // pkt
SELECT NOW( ) , UNIX_TIMESTAMP( NOW( ) ) // 2015-04-10 05:14:38
由于这个时间差,我无法使用PHP从数据库中获取正确的记录。
如何同步PHP和MySQL时区,使两者返回相同的时间?
使用PHP可以更改MySQL的时区吗?
我试过了,但我得到了这个错误:
Warning: PDO::__construct(): The server requested authentication method unknown to the client
您可以使用mysql的函数
CONVERT_TZ(timestamp_field,[mysql_timezone],[php_timezone])
或者在php:中更改服务器时区
date_default_timezone_set([timezone]);
php date_default_timezone_set
或者更改mysql时区:
SET GLOBAL time_zone = [timezone]
该语句将更改mysql的时区,但如果重新启动服务器,它将使用默认时区。您可以在启动时设置默认时区,以下是链接:设置默认时区mysql
希望能帮助
我的网站需要以一种非常复杂的方式在mysql和PHP之间同步。该网站提供了一个演示系统或一个完整的用户在线办公室,适用于全球任何地方。服务器位于美国东部时间,我在澳大利亚东部时间。用户可以在任何地方。因此,用户登录可以来自任何地方。考虑到这一点,我不能设置MySQL或PHP时区,因为USER可能位于欧洲/伦敦,但服务器是美国/东方。为了克服这个问题,我发现在将数据加载到MySQL表时,我不能使用NOW()、CURDATE()或任何其他MySQL函数。因此,我使用的每个PHP程序都有一个头,它设置了适当的时区PLUS变量,以满足我通常使用的任何MySQL函数。当将MySQL数据加载到表中时,我使用PHP变量而不是MySQL函数:$mytime = date("Y:m:d h:m:s"); // for MySQL NOW()
$myymd = date(""); // for MYSQL CURDATE()
这是非常乏味的,但确实确保了加载到MySQL的任何日期/时间与该用户下次从TIMEZONE加载程序时的预期同步。当用户为其数据库使用任何PHP程序/脚本时,该用户的时区始终设置为PHP:
date_default_timezone_set([timezone]);
作为USER登录过程的一部分。