php - 同步 PHP 和 MySQL 时区

标签 php mysql date datetime timezone

我使用以下代码通过 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 的时区?

我已经尝试过this ,但我收到此错误:

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 的时区,但如果重新启动服务器,它将使用默认时区。 您可以在启动时设置默认时区,链接如下: Set default timezone mysql

希望有帮助

关于php - 同步 PHP 和 MySQL 时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29551308/

相关文章:

php - 如何在 if(isset) 语句中使用 PHP 获取 URL 参数以更新表单

PHP/MYSQL - 多个连接到同一个数据库?

c++ - 如何在C++中计算到下一个星期六的秒数?

javascript - Angular.js 日期解析

PHP 从保留先前键的数组中提取部分

php - 使用 javascript 小部件将字符集编码为 php

php - 如何限制此 mysql 查询仅显示列数据一次?

mysql - 更改 my.cnf 以设置 MySQL 复制

sql - 计划的数据库设计

java - 检索存储在数据库中的日期的时区