Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同步MySQL和PHP时间_Php_Mysql_Sql_Timezone - Fatal编程技术网

同步MySQL和PHP时间

同步MySQL和PHP时间,php,mysql,sql,timezone,Php,Mysql,Sql,Timezone,我正在尝试同步我的PHP和MySQL时间。目前时间不同(输出如下): 通过阅读其他用户的资料,我成功地使用SET time_zone='-7:00'更改了MySQL的时间。问题是,根据用户的位置,不同查询的时间会有所不同,我不希望每次查询都更改时区 我是否应该只设置一次时区,使其与服务器的时间相同,然后在PHP中根据用户的时区更改时间?还是有更好的办法 提前谢谢你 您肯定希望在应用程序/数据库中使用单个时区。只有在向用户显示数据时需要更改数据的时区(不在db或php默认tz中),然后只在即将显示

我正在尝试同步我的PHP和MySQL时间。目前时间不同(输出如下):

通过阅读其他用户的资料,我成功地使用
SET time_zone='-7:00'更改了MySQL的时间。问题是,根据用户的位置,不同查询的时间会有所不同,我不希望每次查询都更改
时区

我是否应该只设置一次
时区
,使其与服务器的时间相同,然后在PHP中根据用户的时区更改时间?还是有更好的办法


提前谢谢你

您肯定希望在应用程序/数据库中使用单个时区。只有在向用户显示数据时需要更改数据的时区(不在db或php默认tz中),然后只在即将显示数据之前进行更改。否则,请使用单个时区。我更喜欢格林尼治标准时间

设置mysql服务器时区:在my.conf中 有这样的东西:
default timezone='GMT'
然后重新启动mysql 见:

对于php,应在每个页面顶部的某个位置执行以下命令:

date_default_timezone_set("GMT");
我应该只设置一次时区,使其与服务器的时间相同,然后在PHP中根据用户的时区更改时间吗?还是有更好的办法

对。由于夏令时的原因,您也不应该通过GMT时区设置时区。您可以自己编写函数,通过设置日期\默认\时区\设置('UTC')来完成此转换;然后转到用户的时区

$time = strtotime('2013-03-16 13:14:28'.' UTC');
echo date('Y-m-d g:i:s',$time); //2013-03-16 9:14:28

另一种方法是将mysql时间存储在“Unix时间”中,然后使用PHP仅转换一次。

如何才能使数据库中已设置的日期正确,而这些日期是使用不正确的时区设置的?您需要使用正确时区中的日期更新数据库中的任何日期。只有知道前一个时区是什么,才能这样做。更新db.table set
date
=转换日期(
date
,'old TZ','GMT')感谢您提供有关转换日期的提示!哦,我喜欢将它们存储在Unix时间,然后每次都进行转换的想法。谢谢
$time = strtotime('2013-03-16 13:14:28'.' UTC');
echo date('Y-m-d g:i:s',$time); //2013-03-16 9:14:28