首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >同步PHP和MySQL时区

同步PHP和MySQL时区
EN

Stack Overflow用户
提问于 2015-04-10 08:23:37
回答 2查看 1.4K关注 0票数 1

我通过PHP获得的时区是UMT,使用下面的代码:

代码语言:javascript
复制
$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

代码语言:javascript
复制
SELECT @ @system_time_zone // pkt
SELECT NOW( ) , UNIX_TIMESTAMP( NOW( ) ) // 2015-04-10 05:14:38

由于这个时间差,我无法使用PHP从我的数据库中获取正确的记录。

我如何同步PHP和MySQL时区,使两者都返回相同的时间?

是否可以使用PHP更改MySQL的时区?

我已经尝试过this,但是我得到了这个错误:

代码语言:javascript
复制
Warning: PDO::__construct(): The server requested authentication method unknown to the client
EN

回答 2

Stack Overflow用户

发布于 2015-04-10 08:39:04

您可以使用mysql的函数

代码语言:javascript
复制
CONVERT_TZ(timestamp_field,[mysql_timezone],[php_timezone])

或者在php中更改服务器时区:

代码语言:javascript
复制
date_default_timezone_set([timezone]);

php date_default_timezone_set

或更改mysql时区:

代码语言:javascript
复制
SET GLOBAL time_zone = [timezone]

该语句将更改mysql的时区,但如果您重新启动服务器,它将使用默认时区。您可以在启动时设置默认时区,链接如下:Set default timezone mysql

希望这能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2018-06-07 08:22:15

我的网站需要以一种非常复杂的方式在mysql和PHP之间同步。该网站提供了一个演示系统-或-一个完整的用户在线办公室,可在世界各地使用。服务器位于美国东部时间,我在澳大利亚东部时间。用户可以在任何地方。因此,用户LogIn可以来自任何地方。考虑到这一点,我不能设置MySQL或PHP时区,因为用户可能位于欧洲/伦敦,但服务器位于美国/东方。为了克服这个问题,我发现在将数据加载到MySQL表时,不能使用NOW()、CURDATE()或任何其他MySQL函数。因此,我使用的每个PHP程序都有一个头文件,它设置适当的时区和变量,以迎合我通常使用的任何MySQL函数。在将MySQL数据加载到表中时,我使用PHP变量而不是MySQL函数:

$mytime = date("Y:m:d h:m:s"); // for MySQL NOW() $myymd = date(""); // for MYSQL CURDATE()

这非常繁琐,但确实可以确保加载到MySQL的任何日期/时间都与该用户下次从该时区加载程序时所期望的日期/时间保持同步。当用户将任何PHP程序/脚本用于其数据库时,该用户的时区始终以PHP设置:

date_default_timezone_set([timezone]);

作为用户LogIn过程的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29551308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档